访问函数内的全局变量

时间:2016-05-22 13:17:51

标签: python python-3.x scope

如何将变量作为参数传递给函数?

这是我的代码

def hello (arg):
    global my_name
    my_name = "tarek"

    print("my name is " + arg)

hello(my_name)

这应该打印

my name is tarek

但它并没有给我一个NameError,尽管我将变量my_name声明为全局。

如果我在函数外部声明变量,那么它的效果很好,但是为什么在声明函数内部的变量时它不起作用?

4 个答案:

答案 0 :(得分:1)

您必须在函数之外定义全局变量,然后您不需要在函数中再次定义它。以下代码将打印您想要的内容:

my_name = "tarek"

def hello(arg):
    print("my name is " + arg)

hello(my_name)

答案 1 :(得分:1)

在调用函数之前没有变量my_name,因此没有任何内容可以传递给函数,从而产生错误。 在函数外定义变量,然后在函数内声明它是全局的,如果必须的话。

如果您希望my_name是全局的,则不需要将其传递给函数。只需在函数外部声明并指定它,然后将其声明为全局内部。

传递参数通常是因为你希望它是该函数的本地参数,然后我们通常在它被处理后返回它。对代码进行划分有助于调试。

答案 2 :(得分:0)

hello()内的任何内容都无法在my_name被调用时使hello()存在。

答案 3 :(得分:0)

您的变量声明的范围限定在方法(闭包)内部,并且在您调用该闭包之前不会对该闭包进行求值,此时您会收到错误,因为该变量在该上下文中不存在。

如果我理解正确,您似乎想要这样做

def hello (arg):
    global my_name
    my_name = arg

    print("my name is " + arg)

hello("tarek")