gpt4 book ai didi

python - 如何在函数中使用局部变量并返回它?

转载 作者:太空宇宙 更新时间:2023-11-03 19:45:45 26 4
gpt4 key购买 nike

我正在尝试创建一个脚本来设置局部变量,从函数引用它,并且可以将操纵的值返回到主作用域(或任何它的名称;我是 Python 新手)

我已经简化了我的代码,以展示我想要完成的最基础的工作,我认为是将本地模块从模块导入到功能 block 中。

我已经通过使用 globals 使其工作,但这不是最好的解决方案。 。 .

chambersinreactor = 0;
cardsdiscarded = 0;

def find_chamber_discard():
"""Find chambers and discard in row (reads each player slot)"""
chambersinreactor = 0; # Resets the variable, not what I want
cardsdiscarded = 0; # Resets the variable, not what I want
chambersinreactor += 1
cardsdiscarded += 1
return # Don't know what to put here

find_chamber_discard()

print chambersinreactor # prints as 0, should be 1
print cardsdiscarded # prints as 0, should be 1

最佳答案

函数不必知道它们是从什么范围调用的;函数的要点是创建一个可重用的代码块,可以从不同的位置多次调用该代码块。

您可以通过将信息传递给函数的输入变量来将信息传达给函数。该函数通过返回信息将信息传递回其调用者。

管理作用域的变量是该作用域中代码的工作,而不是它调用的任何函数。如果您需要将变量设置为由函数确定的值,则可以让函数返回这些值并使用它们来设置变量。如果函数计算的值取决于调用范围中的变量值,则需要将它们作为参数传递给函数。您调用的函数不必知道您正在使用哪些变量,也不应该弄乱它们。

把所有这些放在一起,你想做的是这样的:

def find_chamber_discard(chambersinreactor, cardsdiscarded):
chambersinreactor += 1
cardsdiscarded += 1
return (chambersinreactor, cardsdiscarded)

chambersinreactor = 0;
cardsdiscarded = 0;

chambersinreactor, cardsdiscarded = find_chamber_discard(chambersinreactor, cardsdiscarded)

print chambersinreactor
print cardsdiscarded

有一些方法可以通过全局变量或操作可变数据结构来解决这个问题,但最终它们会降低程序的灵 active ,并且更有可能包含难以发现的错误。这些技术有一席之地,但与函数之间传递信息的第一个方法实际上应该是传递参数和接收返回值。

关于python - 如何在函数中使用局部变量并返回它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60152361/

26 4 0
文章推荐: javascript - 用不同的颜色切换每个
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com