鱼C论坛

 找回密码
 立即注册
查看: 1866|回复: 8

[已解决]这是为啥?关于全局变量的问题

[复制链接]
发表于 2021-1-17 22:22:41 | 显示全部楼层 |阅读模式
5鱼币
我看了小甲鱼的视频,老版本的第20集,然后就是关于那个全局变量的问题

小甲鱼的代码是这样的(这个我懂):
  1. count = 5

  2. def myfun():
  3.     global count
  4.     count  = 10
  5.     print(count)
复制代码


然后我自己写的时候,我这么想的,我加了一个:
  1. count = 5

  2. def myfun(count):
  3.     global count
  4.     count  = 10
  5.     print(count)
复制代码


对,就是这个参数。我在IDLE运行的时候,就报错是语法错误,请问是问什么呢?

语法错误

语法错误

希望哪位大哥帮我解释一下

2021年1月17日22:22:16
最佳答案
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变量,很显然的编译器就报错了。
因为两个变量重名了。

最佳答案

查看完整内容

Name 'count' used both as a parameter and as a global : 名称“count”用作参数和全局 你外面定义了一个count ,然后函数又传递了一个count(这里的count也被声明成变量名字了) ,在没有加关键字global 的时候,count指向的是函数传递过来的变量 当count 用关键字global 声明了以后,指向的是count = 5 这个变量,但是函数又传递了一个同名的count变量,很显然的编译器就报错了。 因为两个变量重名了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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变量,很显然的编译器就报错了。
因为两个变量重名了。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-18 01:34:25 | 显示全部楼层
  1. def myfun(count):
  2.     global count
复制代码

        是这两句冲突了,函数的形参一定是局部变量,你不可以把一个铁定的局部变量同时声明为全局变量。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 也是报一样的错误.
说明函数输入的参数不能作为全局变量.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-18 09:42:00 | 显示全部楼层
参数是不可以被修改的!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-18 09:49:00 | 显示全部楼层
参数跟变量是不一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

谢谢 !!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-1-18 18:17:43 | 显示全部楼层
qq1151985918 发表于 2021-1-18 09:49
参数跟变量是不一样的

谢谢 !!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-1-18 18:36:36 | 显示全部楼层
陈尚涵 发表于 2021-1-18 09:42
参数是不可以被修改的!

谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 02:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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