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