这是为啥?关于全局变量的问题
我看了小甲鱼的视频,老版本的第20集,然后就是关于那个全局变量的问题小甲鱼的代码是这样的(这个我懂):count = 5
def myfun():
global count
count= 10
print(count)
然后我自己写的时候,我这么想的,我加了一个:count = 5
def myfun(count):
global count
count= 10
print(count)
对,就是这个参数。我在IDLE运行的时候,就报错是语法错误,请问是问什么呢?
希望哪位大哥帮我解释一下{:5_107:}
2021年1月17日22:22:16 Name 'count' used both as a parameter and as a global: 名称“count”用作参数和全局
你外面定义了一个count,然后函数又传递了一个count(这里的count也被声明成变量名字了) ,在没有加关键字global 的时候,count指向的是函数传递过来的变量
当count用关键字global声明了以后,指向的是count = 5这个变量,但是函数又传递了一个同名的count变量,很显然的编译器就报错了。
因为两个变量重名了。
def myfun(count):
global count
是这两句冲突了,函数的形参一定是局部变量,你不可以把一个铁定的局部变量同时声明为全局变量。 当直接用IDLE编写时, 在写完def myfun(count):后, 写global count时就会报错SyntaxError: name 'lb' is parameter and global
其它即使外面没有指定count = 5, 直接写def myfun(count):global count 也是报一样的错误.
说明函数输入的参数不能作为全局变量.
参数是不可以被修改的! 参数跟变量是不一样的 jackz007 发表于 2021-1-18 01:34
是这两句冲突了,函数的形参一定是局部变量,你不可以把一个铁定的局部变量同时声明为全局变量。
谢谢 !!!!{:5_91:} qq1151985918 发表于 2021-1-18 09:49
参数跟变量是不一样的
谢谢 !!!!{:5_91:} 陈尚涵 发表于 2021-1-18 09:42
参数是不可以被修改的!
谢谢!
页:
[1]