Python 面试碰到的面试题。
在Python中,全局变量需要使用到global关键词。Global用于在local context中改变或者创建全局变量,尽管使用全局变量不经常被认为是一个很好的solution,但是面试的时候还是会碰到这类问题。
def bob():
me = "locally defined" # Defined only in local context
print me
bob()
print me # Asking for a global variable
在PyCharm或者可以用Netbeans安装python插件,运行上述程序,得到的结果如下:
locally defined
Traceback (most recent call last):
File "/PycharmProjects/practice/temp.py", line 6, in <module>
print me # Asking for a global variable
NameError: name 'me' is not defined
所以,在全局中并没有‘me’这个变量。加上‘global me’之后程序会输出两遍“locally defined”。
此外,也可以使用global来声明functions,classes或者其他的对象。
当你不对全部变量进行修改的时候可以访问,即时没有global关键词,但是当你需要对它进行修改的时候就必须要用global关键词声明。
words = ['a','b','c']
def contains (word):
global words # <- not really needed
return (word in words)
def add (word):
global words # must specify that we're working with a global keyword
if word not in words:
words += [word]
return words
print contains('a')
print add('d')
可以本地测试一下删除global给出的提示。