在字符串之前定义函数

时间:2016-04-11 19:42:27

标签: function python-3.x

好的,这是代码即时测试,它根本不起作用。 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()

2 个答案:

答案 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。由于它是本地到函数的范围。

功能影响外部世界的另一种方式"会改变一个可变对象,但这超出了我们的范围(看我在那里做了什么?:-) ......)。