在两个程序
中调用函数get_size()之前,我已经更改了'a'的值第一
a=''
def get_size(b):
size=len(b)
return size
def main():
a='qwerr'
print 'the size of a is:',get_size(a)
if __name__=='__main__':
main()
控制台:the size of a is: 5
第二
a=''
def get_size():
size=len(a)
return size
def main():
a='qwerr'
print 'the size of a is:',get_size()
if __name__=='__main__':
main()
控制台:the size of a is: 0
答案 0 :(得分:1)
这是一个范围问题。第一个程序在a
的本地范围内创建main()
,然后将其传递给get_size()
,而第二个程序从a
中引用全局get_size()
。如果您希望第二个按预期工作,则需要在a
范围内设置main()
全局。
main()
global a
a = 'qwerr'
print 'the size of a is:',get_size()
正如评论中所指出的,在两个版本中都创建了main()
- 作用域a
,但由于版本1中的get_size()
引用了全局a
,因此设置了a
中的本地main()
对get_size()
的操作没有影响。
实际上,你应该尝试不使用全局变量,部分原因是为了避免你在这里遇到的模糊性。
答案 1 :(得分:1)
在第一个程序中,您正在设置一个全局范围,然后将其重置为def main范围中的另一个字符串。
答案 2 :(得分:0)
在第二个程序中,get_size方法将检查其本地范围内的'a'值,但因为它不在其本地范围内,然后它将在其全局范围内进行验证