我试图使我的函数能够接受所需的任意数量的输入。
目前,我有3个经过硬编码的输入(loc1
,loc2
,loc3
)。有没有一种方法可以使输入保持可变,因此,如果我只有1个输入,或者如果我有5个输入,我的函数可以很灵活?
def np_array(loc1, loc2, loc3):
loc_a = np.array(loc1)
loc_b = np.array(loc2)
loc_c = np.array(loc3)
pressure_vector1 = np.subtract(loc_a, loc_c)
pressure_vector2 = np.subtract(loc_a, loc_b)
movement_vector = np.add(pressure_vector1, pressure_vector2)
return movement_vector
答案 0 :(得分:2)
您可以为此使用*args
或**kwargs
。
在Python中,*args
的单星号形式可以用作参数,以将非关键字的变长参数列表发送给函数。值得注意的是,星号(*
是此处的重要元素,因为args一词是已建立的常规习语,尽管它不受语言约束。
**kwargs
的双星号形式用于将带有关键字的可变长度参数字典传递给函数。同样,两个星号(**)
是此处的重要元素,因为通常使用kwargs
一词,尽管该语言未强制使用。
像*args
,**kwargs
一样,您可以接受许多要提供的参数。但是,**kwargs
与*args
的不同之处在于您需要分配关键字。
要了解有关此内容的更多信息,我推荐this很棒的帖子
答案 1 :(得分:0)
您可以使用默认参数使该函数更加灵活,例如:
def np_array(loc1=None, loc2=None, loc3=None):
# ensure you don't use None type variables
if loc1 is None:
loc1 = 'sensibleDefaultValueGoesHere'
# repeat as often as needed before you proceed with the
# actual calculation ...