这个变量如何进入函数? (蟒蛇)

时间:2018-07-12 09:15:37

标签: python function global-variables

我的一位学生在他的课程中引起了我的注意。我重写了下面发生的事情(但与课程工作不同):

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现在是否现在使所有变量成为全局变量?即使这样也不行...请帮助!

3 个答案:

答案 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()的输出将对此进行澄清。