假设我在一个函数中有一个参数要传递给另一个函数,并且两个参数都被命名为相同的名称(因为它们表示相同的逻辑元素)-我该如何处理呢?
def myFunc1(df):
myFunc2(df=df)
def myFunc2(someArg=None, df=None):
# Do sth.
由于不时出现df=df
含糊不清引起的一些问题,我目前的方法主要是用不同的方法来重命名参数,例如因此,在一种方法中,它称为_df
,在另一种方法中,它称为df
。
但是,我认为这不是解决此问题的好方法。还有其他方法吗?
答案 0 :(得分:1)
我目前的方法主要是用不同的方法重命名参数,例如因此,在一种方法中,它称为_df,在另一种方法中称为df。
不要。更糟的是。
我同意人们所说的与您指定的案件没有明显的歧义。但是,如果您的目标是尊重所施加的代码设计,那么您可以做一件事。
您在问题中指出,参数被命名为相同的,因为它们表示相同的逻辑元素。问题是,您的功能不起作用,或者至少我希望它们不起作用。
因此,您可以做的一件事是在df
变量前面加上在函数内部应用的逻辑。
例如。
def myFunc1(df):
#sort df here
myFunc2(sorted_df=df)
def myFunc2(someArg=None, sorted_df=None):
请注意,这是一个虚拟示例,显示了可能的解决方案。您可以根据需要进行调整。
此外,如果您实际上只使用初始df
实例,那么如果您正确选择函数名称,就不会产生歧义。按照上述相同的逻辑,
def myFunc1(df):
sort_df(df=df)
def sort_df(someArg=None, sorted_df=None):
对我来说,这似乎很好。
我认为您的特定情况带来了某种歧义,因为您的函数显然被错误命名(可能出于示例目的,但仍然如此)。