【发布时间】:2019-12-27 08:34:34
【问题描述】:
我有一个如下所示的功能。该代码运行良好,我只需要您的帮助来帮助我了解return 或函数输出的存储方式。我是初学者,您的意见会有所帮助
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
如您所见,我只返回 result 数据帧作为函数的输出。函数没有返回其他变量
当我按如下顺序调用函数时,我希望它会在dataFramesDict[sheet_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_name 未定义
我尝试重新启动内核以确保它没有在其他地方定义。
因为sheet_name 不是全局变量。它仅作为参数传递给上述函数。函数是否也总是默认返回输入参数?
【问题讨论】:
-
您的问题不清楚。显然,您已经有一个名为
sheet_name的变量,因为您可以调用将其作为参数传递的函数。为什么你期望解释器引发错误? 重启内核是什么意思? -
@Selcuk - 如更新后的帖子所示,Sheet_name 作为参数传递,因为它作为另一个函数的输出返回。那么范围不应该只在该函数内有效吗
-
你在第一行声明
sheet_name,使用create_df返回的元组的第二个值。你有什么不清楚的地方? -
感谢您的回复。我现在知道了。我只考虑参数,而不考虑用于存储函数输出的输出变量。也许我应该重命名它们并避免重复
-
以下所有答案都帮助我弄清楚我犯了什么错误并了解变量的范围。感谢您的答复。我将@Devandra Swami 的答案标记为解决方案,因为与其他答案相比,它得到了更多的支持。无论如何,我对这两个答案都投了赞成票
标签: python python-3.x function return return-value