鱼C论坛

 找回密码
 立即注册
查看: 575|回复: 9

[已解决]函数与变量

[复制链接]
回帖奖励 1 鱼币 回复本帖可获得 1 鱼币奖励! 每人限 1 次(中奖概率 10%)
发表于 2020-4-20 15:43:38 | 显示全部楼层 |阅读模式

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

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

x
发现一个问题
现在,假设我们建立了一个函数a:
def a():
   v1 = 20
   print("a")
又建立了函数b:
#在a里面
def a():
   v1 = 20
   print("a")
   def b():
      global a
      while v1 == 20:
         print("符合条件!")
然而,会报错
只不过,把a给去掉就不会了……
这道理谁都懂,但是即使global是可以修改全局变量……
函数里面的嵌套函数使用还是会报错!!!!!
求解
……话说……如果真的要修改当前函数上一层的变量怎么办
最佳答案
2020-4-20 16:02:07
global a 是个什么鬼?
你的程序中没有看到全局变量a啊?
估计你打算写global v1吧?但是v1也不是全局变量啊
你在函数b中用到了外层的变量v1,那就应该用nonlocal关键字指出v1非局部变量
应该在函数b中使用变量v1之前,加上 nonlocal v1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-20 15:45:35 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-20 15:45:38 | 显示全部楼层
用nonlocal啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-20 15:48:53 | 显示全部楼层
Python系统3.8.1
照常理来说,
函数里面的嵌套函数使用还是会报错

这种事应该不会发生吧……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-20 15:53:19 | 显示全部楼层
学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-20 15:56:26 | 显示全部楼层
你真是个小天才呢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-20 16:02:07 | 显示全部楼层    本楼为最佳答案   
global a 是个什么鬼?
你的程序中没有看到全局变量a啊?
估计你打算写global v1吧?但是v1也不是全局变量啊
你在函数b中用到了外层的变量v1,那就应该用nonlocal关键字指出v1非局部变量
应该在函数b中使用变量v1之前,加上 nonlocal v1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-20 16:12:18 | 显示全部楼层
sunrise085 发表于 2020-4-20 16:02
global a 是个什么鬼?
你的程序中没有看到全局变量a啊?
估计你打算写global v1吧?但是v1也不是全局变 ...

咳咳,不好意思啊
重点是有一个全局变量a
然后有一个函数fun1
fun1里面有一个函数fun2
在fun2里面写global a会报错欸
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-20 16:20:06 | 显示全部楼层
翁坤1125 发表于 2020-4-20 16:12
咳咳,不好意思啊
重点是有一个全局变量a
然后有一个函数fun1

请把代码贴出来。
若有全局变量a的话,在函数内用global a应该是不会报错的,估计错误原因不在这里

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
翁坤1125 + 1 + 1 谢谢提醒^_^

查看全部评分

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

使用道具 举报

 楼主| 发表于 2020-4-20 16:31:06 | 显示全部楼层
sunrise085 发表于 2020-4-20 16:20
请把代码贴出来。
若有全局变量a的话,在函数内用global a应该是不会报错的,估计错误原因不在这里

啊对不起是我错了,
我global了两个全局变量,然后有一个打错字了
把l打成了1(字体问题)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 16:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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