簡體   English   中英

NameError:名稱“ myname”未在Python中定義

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM