是否可以指定一个变量在函数中使用,但它不应该是全局的



所以我要做的是分配一个变量用于几个函数。但该变量不应该是全局变量。如果可能的话,我该怎么做?

编辑:我确实忘了一件事。这是我的项目,大部分已经完成了,但这个我的代码需要尽可能不重复我有5个变量和15个函数来使用其中的一些或全部变量。

伊迪丝2:让我在这里发布一个功能。

def draw_stairs(top_stair_wide, stair_height, stair_count, character):
for o in range(stair_count):
for b in range(stair_height):
draw_straight_line(top_stair_wide, character)
print("")
top_stair_wide += 3

我需要做的是,当我使用该函数时,我需要用一个非全局变量填充"top_stair_wide"、"stair_height"one_answers"stair_count">。我不能只放数字,因为我会在数学中再次将这些变量用在14个不同的函数中。

我有一个绘制直线的函数,在此之前,它输入并返回字符,所以这些都不是问题所在。

创建一个类,使变量成为实例变量,并将函数转化为方法。然后,您可以访问每个方法中的实例变量,而无需明确传递它们。

class C:
def __init__(self, var1, var2, var3):
self.var1 = var1
self.var2 = var2
self.var3 = var3
def add_them(self):
return self.var1 + self.var2 + self.var3
def multiply_them(self):
return self.var1 * self.var2 * self.var3

等等。

在函数定义中需要参数,然后在调用变量时将其作为参数传递。

使用您在评论中告诉我的主函数,您可以这样写:

def main():
# Here are your NOT GLOBAL variables:
top_stair_wide = 1
stair_height = 2
stair_count = 3
character = "O"
def draw_stairs(top_stair_wide, stair_height, stair_count, character):
for o in range(stair_count):
for b in range(stair_height):
draw_straight_line(top_stair_wide, character)
print("")
top_stair_wide += 3
# ... more definitions follow 
# Then call the functions...
# Job done when you execute the program:
main()

或者:

def main(top_stair_wide, stair_height, stair_count, character): # <-- cram all the expected arguments there
def draw_stairs(top_stair_wide, stair_height, stair_count, character):
for o in range(stair_count):
for b in range(stair_height):
draw_straight_line(top_stair_wide, character)
print("")
top_stair_wide += 3
# ... more definitions follow 
# Then call the functions...
# Job done when you execute the program:
main(1, 2, 3, "O")

使用kwargs也是可能的,因为当你调用main((时,你必须知道参数,而不是当你定义它时:

def main(**kwargs):
def draw_stairs(**kwargs):
for o in range(kwargs["stair_count"]):
for b in range(kwargs["stair_height"]):
draw_straight_line(kwargs["top_stair_wide"], kwargs["character"])
print("")
kwargs["top_stair_wide"] += 3
# ... more definitions follow 
# Then call the functions...
function1(**kwargs)
function2(**kwargs)
function3(**kwargs)

# Job done when you execute the program:
main(top_stair_wide = 1,
stair_height = 2,
stair_count = 3,
character = "O")

您可以将其传递给您的函数,如:

def func1(variable):
# your logic here with variable
return 'something'
def func2(variable):
# your logic here with variable
return 'something'

或者您可以在当前文件中将其设置为常量:

VARIABLE = 'variable'
def func1():
# your logic here with VARIABLE
return 'something'
def func2():
# your logic here with VARIABLE
return 'something'

另一个选项是使用一个存储共享参数的字典,并仅将该字典(而不是单独传递所有变量(作为参数:

def add_params(params):
return params['var1'] + params['var2'] + params['var3']
def multiply_params(params):
return params['var1'] * params['var2'] * params['var3']
>>> params = {'var1': 1, 'var2', 2, 'var3': 3}
>>> add_params(params)
6
>>> multiply_params(params)
6

相关内容

最新更新