Python 为什么这两个程序会产生不同的结果?
在两个程序中调用函数get_size()之前,我更改了“a”的值 第一: 控制台:Python 为什么这两个程序会产生不同的结果?,python,parameters,Python,Parameters,在两个程序中调用函数get_size()之前,我更改了“a”的值 第一: 控制台:a的大小为:5 第二: 控制台:的大小是:0这是一个范围问题。第一个程序在main()。如果希望第二个按预期工作,则需要在main()范围内使aglobal main() global a a = 'qwerr' print 'the size of a is:',get_size() 正如评论中所指出的,在两个版本中都创建了一个main()-作用域a,但由于版本1中的get\u siz
a的大小为:5
第二:
控制台:
的大小是:0
这是一个范围问题。第一个程序在main()。如果希望第二个按预期工作,则需要在main()
范围内使a
global
main()
global a
a = 'qwerr'
print 'the size of a is:',get_size()
正如评论中所指出的,在两个版本中都创建了一个main()
-作用域a
,但由于版本1中的get\u size()
引用了全局a
,因此在main()
中设置本地a
对get\u size()
的操作没有影响
实际上,您应该尽量不使用globals,部分是为了避免您在这里遇到的歧义。在第一个程序中,您在全局范围内设置一个,然后在def主范围内将其重置为另一个字符串。在第二个程序中,get_size方法将在其局部作用域中检查'a'值,但由于它不在其局部作用域中,然后它将在两个程序中的全局作用域中进行验证,main
创建一个局部a
@delnan Yes,但是由于get_size()
在第一个版本中使用了全局a
,这一事实是不相关的。我将尝试更新我的答案的措辞以澄清。
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()
main()
global a
a = 'qwerr'
print 'the size of a is:',get_size()