Python初学者8号 发表于 2021-1-17 22:22:41

这是为啥?关于全局变量的问题

我看了小甲鱼的视频,老版本的第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

z5560636 发表于 2021-1-17 22:22:42

Name 'count' used both as a parameter and as a global: 名称“count”用作参数和全局

你外面定义了一个count,然后函数又传递了一个count(这里的count也被声明成变量名字了) ,在没有加关键字global 的时候,count指向的是函数传递过来的变量

当count用关键字global声明了以后,指向的是count = 5这个变量,但是函数又传递了一个同名的count变量,很显然的编译器就报错了。
因为两个变量重名了。

jackz007 发表于 2021-1-18 01:34:25

def myfun(count):
    global count
      是这两句冲突了,函数的形参一定是局部变量,你不可以把一个铁定的局部变量同时声明为全局变量。

Nate_2020 发表于 2021-1-18 09:17:04

当直接用IDLE编写时, 在写完def myfun(count):后, 写global count时就会报错SyntaxError: name 'lb' is parameter and global
其它即使外面没有指定count = 5, 直接写def myfun(count):global count 也是报一样的错误.
说明函数输入的参数不能作为全局变量.

陈尚涵 发表于 2021-1-18 09:42:00

参数是不可以被修改的!

qq1151985918 发表于 2021-1-18 09:49:00

参数跟变量是不一样的

Python初学者8号 发表于 2021-1-18 18:13:54

jackz007 发表于 2021-1-18 01:34
是这两句冲突了,函数的形参一定是局部变量,你不可以把一个铁定的局部变量同时声明为全局变量。

谢谢 !!!!{:5_91:}

Python初学者8号 发表于 2021-1-18 18:17:43

qq1151985918 发表于 2021-1-18 09:49
参数跟变量是不一样的

谢谢 !!!!{:5_91:}

Python初学者8号 发表于 2021-1-18 18:36:36

陈尚涵 发表于 2021-1-18 09:42
参数是不可以被修改的!

谢谢!
页: [1]
查看完整版本: 这是为啥?关于全局变量的问题