使变量根据返回值更新其值

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 个输出值添加到 helloworld 使用全局变量或将变量引用传递给函数并更新它们。 【参考方案1】:

将 hello 设为变量并尝试使其 += 返回不起作用。有什么简单的方法可以有效地增加回报吗?

您不能只将函数返回的元组元素添加到左侧元组的元素中。您有以下选择:

    变量(total_hellototal_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】:

你可以直接在函数内部使用helloworld

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)

【讨论】:

以上是关于使变量根据返回值更新其值的主要内容,如果未能解决你的问题,请参考以下文章

isset() 与 empty() 的区别

VB 数组中如何根据值返回元素的位置索引值

PHP isset()与empty()的区别

PHP isset()与empty()的使用区别详解

PHP isset()与empty()的使用区别详解

我在 forEach 中更新的变量,返回到它们的原始值 [重复]