sanyyoyo 发表于 2020-2-1 21:16:47

初学函数,有个关于变量的问题

今天在学全局变量和局部变量,敲代码的时候遇到一个问题想不明白,求前辈释疑:
代码一:
a = 100
def test1():
        print (a)
test1()
这个很简单,函数会调用全局变量a,输出100。
代码二:
def test2():
        a = 100
        a += 1
        print (a)
test2()
这个函数顺利调用局部变量的初始赋值100,然后执行啊a+=1,输出101.
代码三:
把代码二中的局部变量拿出来变成全局变量
a = 100
def tset3():
        a += 1
        print (a)
test3()
这段代码执行的时候就会报错,作为一个初学者,一直没想明白,求解。

冬雪雪冬 发表于 2020-2-1 21:28:22

简单的说,一个函数中一个变量名不能既是全局的又是局部的
a = 100
def f():
print(a) #这里a是全局变量

a=100
def f():
a = 101
print(a) #这里啊是局部变量101,不是全局变量100了

a=100
def f():
a+=1
相当于a = a + 1 #这里由于有赋值,所以a为局部变量,但等号右边的a没有定义(它不是全局变量100)

sanyyoyo 发表于 2020-2-1 21:41:07

非常感谢,这是我在学习python中提出的第一个问题,感谢前辈出手
虽然不是太明白,但我大概能懂了
刚才在代码中又试了一下,如果要把一个全局变量来做这样的运算,可以做一个声明:
a = 100
def num():
    global a
    a *= 2
    print (a)

num()

冬雪雪冬 发表于 2020-2-1 21:53:32

sanyyoyo 发表于 2020-2-1 21:41
非常感谢,这是我在学习python中提出的第一个问题,感谢前辈出手
虽然不是太明白,但我大概能懂了
刚才在 ...

是的
页: [1]
查看完整版本: 初学函数,有个关于变量的问题