繁体   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