很难完全表达我的问题,因为我无法做出最小的例子,因为它是一个大规模的问题。该问题考虑了代码组织:
假设我有一个脚本导入我的实用程序函数并创建了很多变量
import utility
list_a # list of custom objects
list_b # list of custom objects
list_m # list of numpy matrices
matrix_a
net # networkx object
utility.my_main_func(list_a, list_b, list_m, matrix_a, net)
Then in utility I have
my_main_func(a, b, m, m_a, network)
my_func_one(a, b, m, m_a) # no network
my_func_two(a, b, m, m_a, network, additional_one)
my_func_three(a, b, m, m_a, network, additional_two)
所以我的问题是关于代码的可读性和可扩展性,这是什么惯用方法。我应该使用字典和* args和** kwargs,还是没有别的东西。
由于
答案 0 :(得分:1)
你可以使用*args
和**kwargs
(一个是一系列参数,另一个是参数字典,我更喜欢** kwargs)
def test_args(farg, *args):
print "Normal argument: ", farg
for arg in args:
print "*args argument: ", arg
test_args("normal", "this is args", "another args","another another args")
def test_kwargs(farg, **kwargs):
print "Normal argument: ", farg
for key in kwargs:
print "Keyword - Value: %s: %s" % (key, kwargs[key])
test_kwargs(farg=1, myarg="one", myargtwo="two", myargthree="three")
答案 1 :(得分:0)
关于可读性,我认为您的方法不会有任何特殊问题。
关于代码的可扩展性和可用性,我认为如果你的函数都是严格相关的,你可以将它们作为类的方法,并将你的输入值作为类的成员变量,并在构造函数中初始化它们。 / p>