Python- ขอบเขตตัวแปร

def Interface():
     Number = input("Enter number: ")

Interface()
print(Number)

นี่เป็นตัวอย่างโค้ดของฉันที่เรียบง่ายซึ่งสร้าง:

Traceback (most recent call last):
  File "C:/Users/Jack/Documents/Python/NumberToText.py", line 78, in 
    print(Number)
NameError: name 'Number' is not defined

ฉันเข้าใจว่าเป็นเพราะตัวแปรถูกกำหนดไว้ในฟังก์ชัน

ฉันจะทำอย่างไรเพื่อแก้ไขปัญหานี้?


person Oliver Murfett    schedule 01.10.2015    source แหล่งที่มา
comment
ที่จริงแล้วฉันเคยเห็นคำถามแบบนี้มาสามครั้งแล้ว และส่วนใหญ่ก็ได้รับ downvotes มากมาย แต่อันนี้ได้รับสาม upvotes และตอนนี้ไม่มี downvotes ใครช่วยบอกฉันหน่อยได้ไหมว่าทำไม?   -  person Casimir Crystal    schedule 01.10.2015
comment
อาจเป็นเพราะวิธีที่ฉันถามมัน @เควินกวน   -  person Oliver Murfett    schedule 01.10.2015


คำตอบ (2)


ขึ้นอยู่กับสิ่งที่คุณต้องการจะทำ

อาจเป็นไปได้ว่าการคืนค่าฟังก์ชัน Interface Number อาจเป็นวิธีแก้ปัญหาที่ง่ายที่สุด

def interface():
     number = input("Enter number: ")
     return number

print(interface())

โปรดดูSO QA นี้ในหัวข้อกฎขอบเขตใน Python

หมายเหตุ: อย่างที่คุณเห็น ฉันได้แปลงชื่อของฟังก์ชันและตัวแปรให้เป็นตัวพิมพ์เล็ก โดยทำตาม PEP-8 แนวทาง

person Pynchia    schedule 01.10.2015
comment
คุณจะต้องละวงเล็บที่ไม่จำเป็นออก: return number return ไม่ใช่ฟังก์ชัน - person Matthias; 01.10.2015

เนื่องจากตัวแปร Number อยู่ในฟังก์ชัน Interface() เท่านั้น คุณสามารถใช้ return ดังนี้:

def Interface():
     number = int(input("Enter number: "))
     # remember use int() function if you wish user enter a number

     return(number)

print(Interface())

หรือใช้ global แบบนี้:

def Interface():
     global number
     number = input("Enter number: ")
     # remember use int() function if you wish user enter a number

Interface()
print(number)

และใช้ global เมื่อคุณต้องการให้ตัวแปรสามารถใช้งานได้ทุกที่ หรือคุณต้องการให้ฟังก์ชันส่งคืนสิ่งอื่น เพราะการปรับเปลี่ยน globals จะทำลายความเป็นโมดูลาร์

ที่นี่เป็นเอกสารเกี่ยวกับตัวแปรส่วนกลางคืออะไร

person Casimir Crystal    schedule 01.10.2015