鱼C论坛

 找回密码
 立即注册
查看: 2346|回复: 3

[已解决]初学函数,有个关于变量的问题

[复制链接]
发表于 2020-2-1 21:16:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
今天在学全局变量和局部变量,敲代码的时候遇到一个问题想不明白,求前辈释疑:
代码一:
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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

num()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

是的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 10:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表