我的一位学生在他的课程中引起了我的注意。我重写了下面发生的事情(但与课程工作不同):
def tester(number):
print(number)
numbertotal = num1 + num2
print(numbertotal)
number = input("Input a number: ")
num1 = 2
num2 = 2
tester("number")
输出:
Input a number: 12
number
4
num1和num2如何进入函数?我要做的就是将字符串“ number”传递给它,并打印出来。然后,它确实正确地添加了2和2,这没有任何意义,因为我没有传递该函数的任何一个数字。我确实传递了“ number”变量,因此它确实可以传递给它,但是恰好发生了num1和num2仍然可用的情况。 Python现在是否现在使所有变量成为全局变量?即使这样也不行...请帮助!
答案 0 :(得分:2)
Python在运行时解析变量名,因此在调用测试器函数时,已经定义了num1和num2。
答案 1 :(得分:0)
变量是全局变量,因此对函数没有影响,程序的任何部分都可以“查看”它们。
我想这正好说明了我的观点。
def func(GLOBAL):
print (GLOBAL)
GLOBAL = 64
func(32) # <-- localvar naming overrides global
func(GLOBAL) # <-- this one does what you'd expect
答案 2 :(得分:0)
查看locals()
和globals()
的输出将对此进行澄清。