求问Python大神,为什么已经设置了全局变量,还现实未定义变量?

Python012

求问Python大神,为什么已经设置了全局变量,还现实未定义变量?,第1张

#你没有理解global的意义

markov_dicts = {}

def parse():

    global markov_dicts     # 以后出现的就是修改global的内容

    markov_dicts["a"] = 1

print(markov_dicts)         # 直接调用 

    

def print_globvar():

    print(markov_dicts)     # 直接调用 

parse()

print_globvar()

你原始代码里面print的时候那个markov_dicts 还没有定义

>>> def a():

...     global m

...     m = 1

... 

>>> a()

>>> m

1

>>> print m

1

>>> def b():

...     global n

...     n = 2

... 

>>> print n

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

NameError: name 'n' is not defined

>>> b()

>>> n

2

答: 确实很奇怪,我们明明在前面定义了变量number,但是打印的时候却显示这个变量未定义,我觉得其中一种可能性是可能你的某个包中存在一个这样的函数和这个变量重名。因此我建议你换一个变量名比如说命名为number1。重新试一下,看是否能够帮助到你。再比如说int,它是一个数据类型,你也尽量不要定义int=2。这两个错误的可能是类似的。