ความละเอียดอ่อนของการทำงานกับขอบเขตการมองเห็นใน Python

ลองพิจารณาความละเอียดอ่อนที่สำคัญของการทำงานกับตัวแปรท้องถิ่น และตัวแปรระดับโลก

สมมติว่าเรามีตัวแปรระดับโลก num ลองสร้างฟังก์ชัน func ที่จะแสดง num ระดับโลก ออกที่คอนโซล:

pythonnum = 1

def func():
  print(num)

func() # จะแสดง 1

คราวนี้ให้ประกาศตัวแปร num ท้องถิ่นใน บรรทัดใต้ฟังก์ชัน print หลังจาก รันโค้ดจะแสดงข้อผิดพลาดที่คอนโซล สิ่งนี้เกิดขึ้นเพราะ Python ภายในฟังก์ชันรับรู้ num เป็นเพียงตัวแปรท้องถิ่นเท่านั้น ซึ่ง ยังไม่ได้รับการประกาศ:

pythonnum = 1

def func():
  print(num) # จะแสดงข้อผิดพลาด
  num = 2

ตอนนี้มาเขียนโค้ดภายในฟังก์ชันใหม่ เพื่อให้ค่าของตัวแปร num เพิ่มขึ้น 2:

pythonnum = 1

def func():
  num += 2 # จะแสดงข้อผิดพลาด

ข้อผิดพลาดเกิดขึ้นเนื่องจากนิพจน์ num += 2 เป็นตัวแทนของรูปแบบการเขียนต่อไปนี้:

pythonnum = num + 2

อย่างไรก็ตาม ตัวแปรท้องถิ่นนั้นเอง ซึ่ง กำลังถูกบวกเข้าไปยังไม่ได้ประกาศ และดังนั้น Python จึงแสดงข้อผิดพลาด เนื่องจากไม่สามารถบวกตัวเลขเข้าไปใน ค่าที่ไม่มีอยู่ได้

Задание 1

ผลลัพธ์ของการรันโค้ดต่อไปนี้จะเป็นอย่างไร:

pythontst = '12'

def func():
  tst = 12
  return tst
  
print(tst)
Задание 2

ผลลัพธ์ของการรันโค้ดต่อไปนี้จะเป็นอย่างไร:

pythontst = 'abc'

def func():
  tst = tst.upper()
  return tst

func()
print(tst)
Задание 3

ผลลัพธ์ของการรันโค้ดต่อไปนี้จะเป็นอย่างไร:

pythontst = 'abc'

def func():
txt = tst.upper()
return txt
    
print(func())
print(tst)