python主函数没有返回数据框架



我有下面的代码,它不返回在主模块中创建的数据框架。有谁能帮帮忙吗?如果不在main()中,该函数工作正常。我不确定这里遗漏了什么。我正在Jupyter笔记本中测试此代码,并尝试调用exceldf在新单元格

import package as pkg
def main():
list1, list2= pkg.somefunction()
exceldf = pkg.functiontoloadexcelfiles.function(parameter1, parameter2)

我期望看到exceldf中的数据,但是我得到了错误"name 'exceldf' is not defined"

编辑:

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
~AppDataLocalTemp/ipykernel_26012/684895253.py in <module>
----> 1 exceldf
NameError: name 'exceldf' is not defined

上面的代码在没有包装在main函数中时运行良好。

list1,list2= pkg.somefunction()
exceldf = pkg.functiontoloadexcelfiles.function(parameter1,parameter2)
exceldf.head()

修复以下问题

import package as pkg
def main():
global exceldf
list1, list2= pkg.somefunction()
exceldf = pkg.functiontoloadexcelfiles.function(parameter1, parameter2)

exceldf仅在main()中局部声明,因此您必须将exceldf声明为全局变量或从main()函数返回exceldf

import package as pkg
def main():
list1, list2= pkg.somefunction()
exceldf = pkg.functiontoloadexcelfiles.function(parameter1, parameter2)
return exceldf

exceldf = main()
exceldf.head()

检查您的代码中使用exceldf的实例,似乎有一个使用它是在主函数的范围之外的值被分配,它可能只是一个空白的问题。像这样在main函数之后调用exceldf.head()吗?

def main():
list1, list2= pkg.somefunction()
exceldf = pkg.functiontoloadexcelfiles.function(parameter1, parameter2)
exceldf.head()

如果是,则main函数从未被调用,并且它没有返回语句,所以解释器还不知道exceldf的名称,但是你正在尝试调用它,可以尝试这样做:

def create_excel_df():
list1, list2= pkg.somefunction()
exceldf = pkg.functiontoloadexcelfiles.function(parameter1, parameter2)
return exceldf
exceldf = create_excel_df()
exceldf.head()

我将main函数的名称更改为更具描述性的名称,因为当您使用jupyter笔记本时,main只会真正用于运行程序中的主循环,而更像是用于一次运行而不是连续执行的数据管道

最新更新