使变量根据返回值更新其值
Posted
技术标签:
【中文标题】使变量根据返回值更新其值【英文标题】:Make a variable update its value based on returns 【发布时间】:2020-04-20 04:46:43 【问题描述】:我遇到了一个问题,因为我必须多次运行同一个函数,并且想记录每次运行的总数。
def add(word):
total_hello=0
total_world=0
if word=="hello":
total_hello+=1
elif word=="world":
total_world+=1
print(total_hello)
print(total_world)
return total_hello, total_world
hello=0
world=0
hello, world+=add("hello")
hello, world+=add("world")
hello, world+=add("hello")
print(hello)
print(world)
将 hello 设为变量并尝试使其 += 返回不起作用。有什么简单的方法可以有效地增加回报吗?
【问题讨论】:
hello, world
创建一个元组。你不能像这样使用+=
从一个元组添加到一个元组。
如果你重新定义+=
,那么你可以,但不能以原版形式
请添加回溯,以便我们看到确切的错误。另外,你希望发生什么?是否要将 2 个输出值添加到 hello
和 world
?
使用全局变量或将变量引用传递给函数并更新它们。
【参考方案1】:
将 hello 设为变量并尝试使其 += 返回不起作用。有什么简单的方法可以有效地增加回报吗?
您不能只将函数返回的元组元素添加到左侧元组的元素中。您有以下选择:
-
变量(
total_hello
和 total_world
)是函数的本地变量,每次调用函数到 0
时都会重新分配它们。尝试将它们移到您的功能之外并使其成为全局。它们可用于存储变量的计数。
# Code in Module 1:
total_hello=0
total_world=0
def add(word):
global total_hello, total_world
if word=="hello":
total_hello+=1
elif word=="world":
total_world+=1
return total_hello, total_world
# Code in Module 2:
# from Module1 import *
add("hello")
add("world")
hello, world = add("hello")
print(hello)
print(world)
请参阅this 答案以获得更 Pythonic 的方式。
在 Python 中使用default arguments:
def add(word, total_world=[0], total_hello=[0]):
if word == "hello":
total_hello[0] += 1
elif word == "world":
total_world[0] += 1
return total_hello[0], total_world[0]
add("hello")
add("world")
hello, world = add("hello")
print(hello)
print(world)
【讨论】:
然后它给出一个“分配前引用”警报 我运行了这段代码,它对我有用。指出你失败的地方1 一开始我的代码没有工作,但我想通了,谢谢你这么多的全球帮助【参考方案2】:你可以直接在函数内部使用hello
和world
。
hello=0
world=0
def add(word):
global hello, world
if word=="hello":
hello+=1
elif word=="world":
world+=1
print(hello)
print(world)
add("hello")
add("world")
add("hello")
print(hello)
print(world)
【讨论】:
以上是关于使变量根据返回值更新其值的主要内容,如果未能解决你的问题,请参考以下文章