【发布时间】:2021-09-23 05:05:42
【问题描述】:
假设我有这个带有很多变量设置的函数:
def set_variables():
var_a = 10
var_b = 200
这些变量需要在多个函数中设置并通过它们的变量名访问。有没有办法创建这个函数 s.t.在调用它的父函数之后,调用它有var_a 和var_b 而不必返回它们?上面的函数是一个例子,但实际上有很多变量,所以像下面这样的函数并不可行。
def parent_function():
var_a, var_b, ... = set_variables()
理想情况下,我想要类似的东西
def parent_function():
set_variables()
# do some code with var_a or var_b
或者甚至可能返回key、val 的字典并自动生成名称为key 的变量设置为val。
例如
def parent_function():
var_dict = set_variables()
some_func_to_auto_set_vars_from_dict(var_dict)
# Do something with var_a or var_b
【问题讨论】:
-
你可以在一个函数中创建全局变量,但你不能在一个单独的函数中为一个函数创建局部变量,如果你想这样做的话。
-
您正在寻找动态范围的变量:Python 是 lexically 范围的。你想要的都是不可能的。
-
如果您愿意让
set_variables返回一个值,只需返回一个dict而不是多个值。 -
这似乎是开始学习面向对象编程的好时机。
-
如果您反对 OOP,至少有什么特别的原因表明您不只是在函数定义中使用参数吗?如果
set_variables()要简单地返回任何必要的变量,那么您可以将这些变量传递给parent_function()。
标签: python