ความละเอียดอ่อนของการทำงานกับขอบเขตการมองเห็นใน Python
ลองพิจารณาความละเอียดอ่อนที่สำคัญของการทำงานกับตัวแปรท้องถิ่น และตัวแปรระดับโลก
สมมติว่าเรามีตัวแปรระดับโลก num
ลองสร้างฟังก์ชัน func
ที่จะแสดง num ระดับโลก
ออกที่คอนโซล:
num = 1
def func():
print(num)
func() # จะแสดง 1
คราวนี้ให้ประกาศตัวแปร num ท้องถิ่นใน
บรรทัดใต้ฟังก์ชัน print หลังจาก
รันโค้ดจะแสดงข้อผิดพลาดที่คอนโซล
สิ่งนี้เกิดขึ้นเพราะ Python
ภายในฟังก์ชันรับรู้ num
เป็นเพียงตัวแปรท้องถิ่นเท่านั้น ซึ่ง
ยังไม่ได้รับการประกาศ:
num = 1
def func():
print(num) # จะแสดงข้อผิดพลาด
num = 2
ตอนนี้มาเขียนโค้ดภายในฟังก์ชันใหม่
เพื่อให้ค่าของตัวแปร num
เพิ่มขึ้น 2:
num = 1
def func():
num += 2 # จะแสดงข้อผิดพลาด
ข้อผิดพลาดเกิดขึ้นเนื่องจากนิพจน์ num += 2
เป็นตัวแทนของรูปแบบการเขียนต่อไปนี้:
num = num + 2
อย่างไรก็ตาม ตัวแปรท้องถิ่นนั้นเอง ซึ่ง กำลังถูกบวกเข้าไปยังไม่ได้ประกาศ และดังนั้น Python จึงแสดงข้อผิดพลาด เนื่องจากไม่สามารถบวกตัวเลขเข้าไปใน ค่าที่ไม่มีอยู่ได้
ผลลัพธ์ของการรันโค้ดต่อไปนี้จะเป็นอย่างไร:
tst = '12'
def func():
tst = 12
return tst
print(tst)
ผลลัพธ์ของการรันโค้ดต่อไปนี้จะเป็นอย่างไร:
tst = 'abc'
def func():
tst = tst.upper()
return tst
func()
print(tst)
ผลลัพธ์ของการรันโค้ดต่อไปนี้จะเป็นอย่างไร:
tst = 'abc'
def func():
txt = tst.upper()
return txt
print(func())
print(tst)