[英]NameError: name 'myname' is not defined in Python
我經常遇到此錯誤,因此我舉一個例子:
class Me():
def __init__(self,name):
self.name=name
def call():
myname=Me("Alex")
printIt()
def printIt():
print(myname.name)
call()
為什么我得到此錯誤而不是打印“ Alex”? 提前致謝
塊中定義的變量具有塊作用域,這意味着從外部看不到它們。 myname
在函數call
,並且僅在call
可見。
如果我們遵循您的風格
myname = None
def call():
global myname
myname = Me("Alex")
printIt()
def printIt(): # now we could access myname
print(myname.name)
但是,更好的選擇是避免使用不必要的全局變量
def call():
myname = Me("Alex")
printIt(myname)
def printIt(somebody): # now we could access aPerson as well
print(somebody.name)
myname
是一個局部變量,只能在定義它的函數內部使用。
嘗試將其作為參數傳遞:
def call():
myname = Me("Alex")
printIt(myname)
def printIt(myname):
print(myname.name)
myname不是全局變量。 它不在printIt方法的范圍內。 它在call方法本地。 如果要訪問它,請以全局方式聲明它,或將myname對象作為參數傳遞給printIt。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.