好的,这是代码即时测试,它根本不起作用。 Python说我的x未定义,即使我的set_x应该将x设置为一个值。我错过了什么?
def hi():
print(x)
def set_x1():
x = "hello"
hi()
def set_x2():
x = "world"
hi()
set_x1()
set_x2()
答案 0 :(得分:1)
更接近原始代码,只需传递变量:
def hi(x):
print(x)
def set_x1():
x = "hello"
hi(x)
def set_x2():
x = "world"
hi(x)
set_x1()
set_x2()
所有这些都与你的hello函数有关,无法看到其他函数中x变量中的内容,我们知道它是一个局部变量。这是一个很好的讲座,告诉你代码背后的内容:https://www.youtube.com/watch?v=_AEJHKGk9ns
答案 1 :(得分:0)
你不应该在local scope中设置x。您可以改为返回一个值(并且可能将x
设置为该值):
def hi(x_arg):
print(x_arg)
def x1():
return "hello"
def x2():
return "world"
x = x1()
hi(x)
x = x2()
hi(x)
在原始代码中,函数结束时不再定义x
。由于它是本地到函数的范围。
功能影响外部世界的另一种方式"会改变一个可变对象,但这超出了我们的范围(看我在那里做了什么?:-) ......)。