Skip to main content
 首页 » 编程设计

python之应该如何设置一个不变的 Python 函数的参数

2025年05月04日30www_RR

我有一个被调用多次的函数。它的大部分论点都发生了变化,但有一个保持不变。有没有办法不必将其作为参数包含在内?

# in a loop that changes index 
data.variable(index = index, name = "el_1_pt",   value = event.el_pt[0]) 
data.variable(index = index, name = "el_1_eta",  value = event.el_eta[0]) 
data.variable(index = index, name = "el_1_phi",  value = event.el_phi[0]) 
data.variable(index = index, name = "jet_1_pt",  value = event.jet_pt[0]) 
data.variable(index = index, name = "jet_1_eta", value = event.jet_eta[0]) 
data.variable(index = index, name = "jet_1_phi", value = event.jet_phi[0]) 
data.variable(index = index, name = "jet_1_e",   value = event.jet_e[0]) 
data.variable(index = index, name = "jet_2_pt",  value = event.jet_pt[1]) 
data.variable(index = index, name = "jet_2_eta", value = event.jet_phi[1]) 
data.variable(index = index, name = "jet_2_phi", value = event.jet_eta[1]) 
data.variable(index = index, name = "jet_2_e",   value = event.jet_e[1]) 
data.variable(index = index, name = "met",       value = event.met_met) 
data.variable(index = index, name = "met_phi",   value = event.met_phi) 

你可以看到没有改变的参数是index。有什么方法可以让我不必将其指定为函数的参数并使用更少的文本吗?

请您参考如下方法:

您可以使用 partial 在每个循环中创建一个偏函数:

from functools import partial 
for index in indexes: 
    variable = partial(data.variable, index=index) 
    variable(name="el_1_pt", value=event.el_pt[0]) 
    variable(name="el_1_eta", value=event.el_eta[0]) 
    variable(name="el_1_phi", value=event.el_phi[0]) 
    variable(name="jet_1_pt", value=event.jet_pt[0]) 
    variable(name="jet_1_eta", value=event.jet_eta[0]) 
    variable(name="jet_1_phi", value=event.jet_phi[0]) 
    variable(name="jet_1_e", value=event.jet_e[0]) 
    variable(name="jet_2_pt", value=event.jet_pt[1]) 
    variable(name="jet_2_eta", value=event.jet_phi[1]) 
    variable(name="jet_2_phi", value=event.jet_eta[1]) 
    variable(name="jet_2_e", value=event.jet_e[1]) 
    variable(name="met", value=event.met_met) 
    variable(name="met_phi", value=event.met_phi)