将参数从一个函数传递给另一个函数,其中另一个参数在Python中具有相同的名称

时间:2018-07-23 12:47:46

标签: python naming-conventions

假设我在一个函数中有一个参数要传递给另一个函数,并且两个参数都被命名为相同的名称(因为它们表示相同的逻辑元素)-我该如何处理呢?

def myFunc1(df):
   myFunc2(df=df)

def myFunc2(someArg=None, df=None):
   # Do sth.

由于不时出现df=df含糊不清引起的一些问题,我目前的方法主要是用不同的方法来重命名参数,例如因此,在一种方法中,它称为_df,在另一种方法中,它称为df。 但是,我认为这不是解决此问题的好方法。还有其他方法吗?

1 个答案:

答案 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):

对我来说,这似乎很好。

我认为您的特定情况带来了某种歧义,因为您的函数显然被错误命名(可能出于示例目的,但仍然如此)。