Python 默认情况下是否始终返回函数的输入参数?

Python 默认情况下是否始终返回函数的输入参数?,python,python-3.x,function,return,return-value,Python,Python 3.x,Function,Return,Return Value,我有一个下面给出的函数。代码工作正常,我只需要您帮助我了解返回或函数输出是如何存储的。我是一个初学者,你的输入会很有帮助 dataFramesDict = dict() def create_df(xls,s): ...... return sheet_df,sheet_name def transform_stage_1_df(sheet_df,sheet_name): ..... ..... return sheet_df,sheet_name

我有一个下面给出的函数。代码工作正常,我只需要您帮助我了解
返回
或函数输出是如何存储的。我是一个初学者,你的输入会很有帮助

dataFramesDict = dict()

def create_df(xls,s): 
   ......
   return sheet_df,sheet_name

def transform_stage_1_df(sheet_df,sheet_name):
    ..... 
    .....
    return sheet_df,sheet_name

def transform_stage_2_df(sheet_df, sheet_name):

     result = pd.concat(....)
     return result
如您所见,我只返回
结果
数据帧作为函数的输出。函数不返回其他变量

当我按如下顺序调用函数时,我希望它在
dataFramesDict[sheet\u name]
的最后一行抛出一个错误
,但它工作正常

sheet_df,sheet_name = create_df(xls,s)
sheet_df,sheet_name = transform_stage_1_df(sheet_df,sheet_name)
dataFramesDict[sheet_name] = transform_stage_2_df(sheet_df,sheet_name)
我不应该收到下面这样的错误消息吗

未定义工作表名称

我尝试重新启动内核以确保它没有在其他地方定义


因为
sheet\u name
不是全局变量。它仅作为参数传递给上述函数。默认情况下,函数是否也总是返回输入参数?

在初始问题的行范围内未定义sheet_df、sheet_name和unit_dict。在对问题的编辑中,您显示了所有这些变量的设置位置。因为它们是在前面的行中设置的,所以没有什么神秘之处


return不返回参数或将其放入范围。

在初始问题的行范围内未定义sheet\u df、sheet\u name和unit\u dict。在对问题的编辑中,您显示了所有这些变量的设置位置。因为它们是在前面的行中设置的,所以没有什么神秘之处


return不返回参数或将其放入范围。

变量表名称在transform\u stage\u 2\u df外部定义,因为您将其用作输入参数,因此已在外部定义

dataFramesDict[sheet_name] = transform_stage_2_df(sheet_df,sheet_name)

变量表_名称在transform_stage_2_df外部定义,因为您将其用作输入参数,因此已在外部定义

dataFramesDict[sheet_name] = transform_stage_2_df(sheet_df,sheet_name)


你的问题不清楚。显然,您已经有一个名为
sheet\u name
的变量,因为您可以调用作为参数传递的函数。为什么你希望口译员会出错?另外,重新启动内核是什么意思?@Selcuk-如更新后的文章所示,Sheet_name作为参数传递,因为它是作为另一个函数的输出返回的。因此,作用域不应该仅在第一行中声明的
sheet\u name
函数中有效,使用
create\u df
返回的元组的第二个值。你还不清楚什么?谢谢你的回复。我现在明白了。我只考虑参数,而不考虑用于存储函数输出的输出变量。也许我应该重新命名它们,避免重复。下面的答案帮助我找出了我犯的错误,并理解了变量的范围。谢谢你的回复。我将@Devandra Swami答案标记为解决方案,因为与其他答案相比,它获得了更多的选票。无论如何,我对两个答案都投了赞成票。你的问题不清楚。显然,您已经有一个名为
sheet\u name
的变量,因为您可以调用作为参数传递的函数。为什么你希望口译员会出错?另外,重新启动内核是什么意思?@Selcuk-如更新后的文章所示,Sheet_name作为参数传递,因为它是作为另一个函数的输出返回的。因此,作用域不应该仅在第一行中声明的
sheet\u name
函数中有效,使用
create\u df
返回的元组的第二个值。你还不清楚什么?谢谢你的回复。我现在明白了。我只考虑参数,而不考虑用于存储函数输出的输出变量。也许我应该重新命名它们,避免重复。下面的答案帮助我找出了我犯的错误,并理解了变量的范围。谢谢你的回复。我将@Devandra Swami答案标记为解决方案,因为与其他答案相比,它获得了更多的选票。不管怎样,我对两个答案都投了赞成票。我更新了帖子。没有更多的信息。Sheet_name是另一个函数的返回输出,如图所示above@SSMK其中是调用create_df()的行?更新了文章,增加了一些行,因此在添加的行上定义了sheet_name。(它出现在equals的左侧)我已经更新了帖子。没有更多的信息。Sheet_name是另一个函数的返回输出,如图所示above@SSMK其中是调用create_df()的行?更新了文章,增加了一些行,因此在添加的行上定义了sheet_name。(它出现在equals的左侧)但我没有将其定义为gobal变量。这一切都在功能范围内。我做错什么了吗?向上投票。您可以在代码本身中看到,sheet_name已经在函数transform_stage_2_df外部定义,并指定为create_df函数的输出参数之一。这可能是因为您的代码样式,函数transform_stage_2_df内部的sheet_name和外部的计算结果相同。但它们指的是不同的记忆。你可以使用id(sheet_name)在fn内部和外部打印,它们将输出不同的值。好的,我们用来存储函数输出的变量可以在任何地方使用。我是否遵循了一种错误的做法,将它们全部命名为相同的?只要您对变量的范围有基本的了解,就可以了。您已在调用方命名空间中分配了输出。但我没有将其定义为gobal变量。这一切都在功能范围内。我做错什么了吗?向上投票。您可以在代码本身中看到,sheet_name已经在函数transform_stage_2_df外部定义,并指定为create_df函数的输出参数之一。这可能是因为您的代码样式,函数transform_stage_2_df内部的sheet_name和外部的计算结果相同。但它们指的是不同的记忆。你可以用