我已经找到了关于如何将长参数列表传递给函数的各种详细解释,但我仍然有点怀疑这是否是正确的方法。
换句话说,我怀疑我做错了,但我不知道如何做对。
问题:我有(不是很长)循环函数,它使用了相当多的变量,并且至少需要修改其中的一些内容。
我最终得到的是这样的:
def myFunction(alpha, beta, gamma, zeta, alphaList, betaList, gammaList, zetaList):
<some operations>
myFunction(alpha, beta, modGamma, zeta, modAlphaList, betaList, gammaList, modZetaList)
Run Code Online (Sandbox Code Playgroud)
...我想看看我对原始变量所做的更改(在 CI 中只会传递一个引用,但我听说在 Python 中它总是一个副本?)。
对不起,如果菜鸟,我不知道如何表达这个问题,所以我可以找到相关的答案。
gav*_*inb 10
您可以将所有参数包装在一个类中,如下所示:
class FooParameters:
alpha = 1.0
beta = 1.0
gamma = 1.0
zeta = 1.0
alphaList = []
betaList = []
gammaList = []
zetaList = []
Run Code Online (Sandbox Code Playgroud)
然后您的函数采用单个参数实例:
def myFunction(params):
omega = params.alpha * params.beta + exp(params.gamma)
# more magic...
Run Code Online (Sandbox Code Playgroud)
像这样调用:
testParams = FooParameters()
testParams.gamma = 2.3
myFunction(testParams)
print params.zetaList
Run Code Online (Sandbox Code Playgroud)
由于 params 实例是通过引用传递的,因此保留了函数中的更改。
matplotlib
例如,这通常用于。他们使用*
or传递一长串参数**
,例如:
def function(*args, **kwargs):
do something
Run Code Online (Sandbox Code Playgroud)
调用函数:
function(1,2,3,4,5, a=1, b=2, b=3)
Run Code Online (Sandbox Code Playgroud)
Here 1,2,3,4,5
will go toargs
和a=1, b=2, c=3
will go to kwargs
,作为字典。以便他们到达您的功能,例如:
args = [1,2,3,4,5]
kwargs = {a:1, b:2, c:3}
Run Code Online (Sandbox Code Playgroud)
你可以按照你想要的方式对待他们。
归档时间: |
|
查看次数: |
5777 次 |
最近记录: |