ทำความรู้จักกับภาษา python (24) : Namespace (เนมสเปช) and Scoping (สคอปปิ้ง)

แชร์ความรู้ภาษา Python ไพทอน การเขียนโปรแกรมภาษาไพทอน

Moderators: mindphp, ผู้ดูแลกระดาน

dawthana
PHP Super Hero Member
PHP Super Hero Member
Posts: 604
Joined: 07/12/2016 10:55 am

ทำความรู้จักกับภาษา python (24) : Namespace (เนมสเปช) and Scoping (สคอปปิ้ง)

Post by dawthana » 13/01/2017 10:01 am

Namespace (เนมสเปช) and Scoping (สคอปปิ้ง)
Namespace (เนมสเปช) คือ Dictionary (ดิกชันนารี) ที่ใช้เก็บ Key (คีย์) และ Value (เวลู่) ของตัวแปร โดยมีอยู่ 2 ลักษณะ คือ Global Namespace (โกลบอล เนมสปเช) และ Local Namespace (โลคอล เนมสเปช) ซึ่งในแต่ละฟังก์ชันจะเป็นเจ้าของแต่ละ Local Namespace Methods (โลคอล เนมสเปช เมธอด) ของคลาส

ตัวอย่างลักษณะของ Global Namespace
Global Namespace.png
Global Namespace.png (35.97 KiB) Viewed 895 times
ฟังก์ชัน dir() (เดอร์) เป็นฟังก์ชัน Built-in (บิวต์-อิน) ในภาษา python (ไพทอน) ที่ใช้สำหรับเรียกดูค่าต่างๆที่กำหนดภายใน Module (โมดูล) เช่น ชื่อ Module, ตัวแปร โดยจะคืนค่าออกมาเป็น String (สตริง)
dir.png
dir.png (20.46 KiB) Viewed 895 times
ฟังก์ชัน globals() และ locals() เป็นฟังก์ชัน Built-in ในภาษา python เช่นกัน แต่ใช้สำหรับเรียกดูค่า Namespace โดยขึ้นอยู่กับตำแหน่งที่เรียกใช้
globals_locals.png
globals_locals.png (24.5 KiB) Viewed 895 times
ฟังก์ชัน reload (รีโหลด) ใน python
ฟังก์ชัน reload() เป็นฟังก์ชัน Bulit-in ในภาษา python ที่หากได้ทำการ import (อิมพอร์ต) โมดูลมาใช้งานครั้งหนึ่งแล้วต้องการใช้งานซ้ำอีก
รูปแบบการใช้งาน

Code: Select all

reload(Module_name)
ตัวอย่างการใช้งาน

Code: Select all

reload(global_namespace)
ศึกษาข้อมูลมาจาก https://www.youtube.com/watch?v=I0wz2UQ ... lzdKrpxsMM

dawthana
PHP Super Hero Member
PHP Super Hero Member
Posts: 604
Joined: 07/12/2016 10:55 am

Re: ทำความรู้จักกับภาษา python (24) : Namespace (เนมสเปช) and Scoping (สคอปปิ้ง)

Post by dawthana » 13/01/2017 10:02 am

สามารถศึกษาข้อมูลเพิ่มเติมได้ที่ https://www.mindphp.com/vdo-tutorial-pyt ... pring.html

Dive Demo
PHP Sr. Member
PHP Sr. Member
Posts: 84
Joined: 01/02/2017 11:10 am

Re: ทำความรู้จักกับภาษา python (24) : Namespace (เนมสเปช) and Scoping (สคอปปิ้ง)

Post by Dive Demo » 04/02/2017 1:35 pm

ผมสงสัยว่าตัวฟังก์ชั่น dir() กับ reload() จริง ๆ การใช้งานมันมีประโยชน์อย่างไรเหรอครับ?

Four
PHP Super Hero Member
PHP Super Hero Member
Posts: 813
Joined: 08/01/2018 9:55 am

Re: ทำความรู้จักกับภาษา python (24) : Namespace (เนมสเปช) and Scoping (สคอปปิ้ง)

Post by Four » 24/01/2018 5:26 pm

Code: Select all

int = 10
def Addint():
    global int
    int = int * 2

print(int)
Addint()
print(int)
ผลรัน

Image
I am slow walker, but I never walk back. (Abraham Lincoln)

User avatar
Jom07
PHP Super Hero Member
PHP Super Hero Member
Posts: 514
Joined: 08/01/2018 9:56 am

Re: ทำความรู้จักกับภาษา python (24) : Namespace (เนมสเปช) and Scoping (สคอปปิ้ง)

Post by Jom07 » 25/01/2018 2:04 pm

Code: Select all

var_int = 15
def Addint():
    global var_int
    var_int = var_int + 5

print(var_int)
Addint()
print(var_int)
ผลรัน

Image

ศึกษาข้อมูลจาก : https://www.youtube.com/watch?v=I0wz2UQ ... lzdKrpxsMM
Image

Patcharanan.0399
PHP Hero Member
PHP Hero Member
Posts: 114
Joined: 09/04/2018 10:04 am

Re: ทำความรู้จักกับภาษา python (24) : Namespace (เนมสเปช) and Scoping (สคอปปิ้ง)

Post by Patcharanan.0399 » 21/04/2018 1:49 pm

Code: Select all

var_int = 10 
def Addint():
    global var_int
    var_int = var_int + 1
    
print (var_int)
Addint ()
print (var_int)
ผลการรัน
Namespace.JPG
Namespace.JPG (10.1 KiB) Viewed 798 times

Code: Select all

var_int = 10 
def Addint():
    #global var_int
    var_int = var_int + 1
    
print (var_int)
Addint ()
print (var_int)
ผลการรัน
Namespace1.JPG
ทดลองไม่ใช้งาน ตัวแปร var_int ที่มีลักษณะเป็น Global Namespace ในฟังก์ชัน
Namespace1.JPG (28.15 KiB) Viewed 798 times
ไม่มีการประกาศตัวแปร Local ไม่มีการส่งค่า argument มาให้ฟังก์ชัน ดังนั้นจึงต้องประการศให้มีการใช้ค่าของตัวแปร Global


ศึกษาจาก https://youtu.be/I0wz2UQIrN4

rangsan
PHP Hero Member
PHP Hero Member
Posts: 199
Joined: 30/04/2018 9:44 am

Re: ทำความรู้จักกับภาษา python (24) : Namespace (เนมสเปช) and Scoping (สคอปปิ้ง)

Post by rangsan » 04/05/2018 9:40 am

Namespace (เนมสเปช) and Scoping (สคอปปิ้ง)

Code: Select all

var_int = 5
def Addint():
    global var_int
    global total
    var_int2 = 20
    total = var_int * var_int2
    print "---Calculation Please Wait !!---"
    
print "Variable int is : ",var_int
Addint()
print"Total sum is    : ",total

ผลการรันโค้ด
Namespace_Scoping.png
Namespace_Scoping.png (15.82 KiB) Viewed 780 times
ศึกษาจาก : https://www.youtube.com/watch?v=I0wz2UQ ... lzdKrpxsMM
It’s never too late to start again.

anuwat somsakul
PHP Full Member
PHP Full Member
Posts: 44
Joined: 08/08/2018 9:49 am

Re: ทำความรู้จักกับภาษา python (24) : Namespace (เนมสเปช) and Scoping (สคอปปิ้ง)

Post by anuwat somsakul » 10/08/2018 4:46 pm

Namespaces and Scoping ใน Python Local Global

Code: Select all

var_int = 10
def Addint():
    global var_int
    var_int = var_int + 1
print(var_int)
Addint()
print(var_int)
ผลลัพธ์
Selection_017.png
Selection_017.png (8.82 KiB) Viewed 690 times

Post Reply

Return to “Python Knowledge”

Users browsing this forum: No registered users and 21 guests