2 python全局变量如何指定(是在模块内,还是函数内)

示例代码1

xx=1
def __recurrence():
#    #前面的0到sentence_length-1的下标,存储的就是最原始的词向量,但是我们也要将其转变为Tensor
    global xx
    xx=100
__recurrence()
print (xx)

输出100。

示例代码2

def xiaojie():
    xx=1
    def __recurrence():
    #    #前面的0到sentence_length-1的下标,存储的就是最原始的词向量,但是我们也要将其转变为Tensor
        global xx
        xx=100
    __recurrence()
    print (xx)
xiaojie()

执行到xx=100的时候。会输出

*** NameError: name 'xx' is not defined
这是因为,函数xiaojie()中定义的xx=1不是全局变量。

最后输出的print(xx)还是1.

示例代码3

xx=99
def xiaojie():
    xx=1
    def __recurrence():
    #    #前面的0到sentence_length-1的下标,存储的就是最原始的词向量,但是我们也要将其转变为Tensor
        global xx
        xx=100
    __recurrence()
    print (xx)
xiaojie()
print (xx)

依次输出1,和100。

所以,模块内定义的xx是全局变量。而函数xiaojie()内定义的xx=1不是全局变量。

python变量的查找规则

2 python全局变量如何指定(是在模块内,还是函数内)_第1张图片

 

你可能感兴趣的:(2 python全局变量如何指定(是在模块内,还是函数内))