Python中文
首页
教程
问答
标签
搜索
登录
注册
Python创建局部变量而不是使用全局变量
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我正在构建一个Discord机器人,但我认为这与Python的关系比与<code>discord.py</code>的关系更大</p> <p>我有此功能,用于识别服务器成员:</p> <pre><code>async def targetIdentificator(ctx): targetArgument = ctx.message.content.lower().replace(">target", "") for member in ctx.message.guild.members: if targetArgument.lower() in member.name.lower(): targetID = member.id targetName = targetArgument print("targetID") if targetID != "": return targetID else: return None </code></pre> <p>在代码的上面大约200行,我定义了两个变量:</p> <pre><code>targetName = "" targetID = "" </code></pre> <p>在整个代码中,在各种其他函数中,我已经多次使用这些变量。在这个函数中,当我提到<code>targetID</code>时,它引用了一个新的局部变量,而不是全局变量。因此,如果<code>for</code>循环中的<code>if</code>语句从未通过,我会得到以下错误:</p> <pre><code>UnboundLocalError: local variable 'targetID' referenced before assignment </code></pre> <p>这可能是一个非常简单的错误,如果是的话,我很抱歉,但我已经为此挠头很久了,似乎不明白为什么</p> <p>提前谢谢</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>为了更改局部函数中的全局变量,需要使用<code>global</code>语句告诉python该变量是全局变量</p> <p>在这种情况下,它应该看起来像:</p> <pre><code>async def targetIdentificator(ctx): global targetID global targetName .... </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
当用户用PYTHON设置一个或一个不带值的URL时,他们怎么能输入一个/a的代码呢?
6 回答
当用户登录到站点时,如何显示不同的导航栏
1 回答
当用户登录时,在Flask中向用户显示处理结果
1 回答
当用户的Flask会话结束时,我如何从Redis后端中移除所有Celery结果?
5 回答
当用户的Okta配置文件字段当前为blan时,更新该字段
8 回答
当用户的付款逾期2天时,从Django模型检索数据
6 回答
当用户的消息以问号结尾时,如何让机器人说些什么?
8 回答
当用户的系统上可能也安装了Python 2.7时,如何在用户的系统上运行Python 3脚本?
9 回答
当用户确定打印数量时,使用Matplotlib打印动画
10 回答
当用户离开时是否可以删除整个网页?
2 回答
当用户给出一个单词时如何打印?
8 回答
当用户继续更改TKin中的值(使用trace方法)时,使用Entry并更新输入的条目
5 回答
当用户编辑表单字段时,从Django时间字段中删除秒数
1 回答
当用户被更改时,消息不会来自web套接字
3 回答
当用户访问表单时,如何使表单为只读,而不具有更改权限
6 回答
当用户试图更改对象的值时,使用描述符类引发RuntimeError
10 回答
当用户调整GUI的大小时,是否有方法更改GUI内容的大小?
1 回答
当用户调整风的大小时,pythontkinter小部件的大小会不均匀
7 回答
当用户购买某个类别时,是否查找其他类别的销售?
1 回答
当用户转到上一页时,Django和芹菜插入操作
3 回答