Python中文
首页
教程
问答
标签
搜索
登录
注册
在循环函数中仅创建一次变量
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我有一个经常循环的函数。 在它里面,我想创建一个变量,然后将不断增加。 我的问题是,当我在函数中定义它时,它会被新的迭代覆盖,从而使它的使用无效</p> <p>所以我只想定义它一次,不管它循环的频率有多高。但也许还有另一种解决办法</p> <p>我的代码和变量是<code>aniTimer</code>:</p> <pre><code>def animate(self, sprite_array, animation_length_in_s, pos): aniTimer = ? #How do I define it only once? ani_len = animation_length_in_s sprite_len = len(sprite_array) -1 if time.time() >= aniTimer + ani_len: self.aniCount += 1 aniTimer = time.time() if self.aniCount > sprite_len: self.aniCount = 0 </code></pre> <p>我试过这个:</p> <pre><code>def animate(self, sprite_array, animation_length_in_s, pos): try: aniTimer except NameError: aniTime = time.time() ani_len = animation_length_in_s sprite_len = len(sprite_array) -1 if time.time() >= aniTimer + ani_len: self.aniCount += 1 aniTimer = time.time() if self.aniCount > sprite_len: self.aniCount = 0 </code></pre> <p>我试过这个:</p> <pre><code>def animate(self, sprite_array, animation_length_in_s, pos): if "aniTimer" not in locals(): aniTime = time.time() ani_len = animation_length_in_s sprite_len = len(sprite_array) -1 if time.time() >= aniTimer + ani_len: self.aniCount += 1 aniTimer = time.time() if self.aniCount > sprite_len: self.aniCount = 0 </code></pre> <p>但两种尝试都会执行。这也让我想到了为什么会发生这种情况的问题。<code>NameError</code>应该只存在一次,定义变量后,它应该位于<code>locals()</code></p> <p>此外,全局定义变量会导致错误,即在定义局部变量之前先引用它。 并将其定义为utillity函数中的全局变量</p> <p><strong>MRE</strong></p> <p>这是一个<strong>MRE</strong>,有着几乎相同的问题,但是变量<code>timer</code>。这个函数将被许多对象调用,所以计时器需要为调用它的每个对象都有一个单独的值</p> <pre><code>timer = 0 breaks = 3 looping = True def test(): while looping: timer += 1 print(timer) if timer >= breaks: print("Print this") break test() </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>如果要使用全局变量,可以在函数顶部使用<code>global aniTime</code>在函数中使用它</p> <p>最佳实践可能是将变量保存在调用函数的循环之外,并且可以将其作为参数传递到函数中</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
我想从用户inpu创建一个类的实例
1 回答
我想从用户导入值,为此
3 回答
我想从用户那里得到一个整数输入,然后让for循环遍历该数字,然后调用一个函数多次
10 回答
我想从用户那里收到一个列表,并在其中执行一些步骤,然后在步骤完成后将其打印回来,但它没有按照我想要的方式工作
1 回答
我想从用户那里获取输入,并将值传递给(average=dict[x]/6),然后在那里获取resu
4 回答
我想从第一个列表中展示第一个词,然后从第二个列表中展示十个词,以此类推- Python
2 回答
我想从第一个空lin开始解析文本文件
1 回答
我想从简历、简历中提取特定部分
7 回答
我想从给定字典(python)的字符串中删除\u00a9、\u201d和类似的字符。
8 回答
我想从给定的网站Lin下载许多文件扩展名相同的Wget或Python文件
1 回答
我想从网上搜集一些关于抵押贷款的数据
2 回答
我想从网站上删除电子邮件地址
8 回答
我想从网站上读取数据该网站包含可下载的文件,然后我想用python脚本把它发送给oracle如何?
4 回答
我想从网站中提取数据,然后将其显示在我的网页上
7 回答
我想从网页上提取统计数据。
4 回答
我想从网页上解析首都城市,并在用户输入国家时在终端上打印它们
10 回答
我想从色彩图中删除前n个颜色,而不丢失原始颜色数
6 回答
我想从课堂上打印字典里的键
10 回答
我想从费用表中获取学生上次支付的费用,其中学生id=id
4 回答
我想从较低的顺序对多重列表进行排序,但我无法在一行中生成结果
1 回答