Sagemaker Jupyter Notebook函数参数异常:定义2参数却提示仅接受1个
你遇到的矛盾点在于inspect.getsource显示函数定义包含2个参数,但实际调用时却提示只接受1个,这大概率是Jupyter Notebook的代码执行或函数状态问题,按以下步骤排查:
重新执行函数定义的单元格
你可能修改了create_unique_files_dict的参数(比如从1个调整为2个),但未重新运行定义该函数的单元格。Jupyter会将之前执行过的函数版本保留在内存中,即便你修改了代码,只要没重新执行定义单元格,调用的仍是旧版本。找到定义该函数的单元格并重新运行即可。检查函数是否被意外覆盖
查看Notebook中调用函数之前的代码,确认是否存在将create_unique_files_dict重新赋值给另一个仅接受1个参数的函数的情况(比如create_unique_files_dict = some_other_function)。搜索所有出现该函数名的位置,排除被篡改的可能。确认函数是否为类的实例方法
如果create_unique_files_dict是某个类的实例方法,它的第一个参数应为self,但inspect.getsource可能仅显示函数本身代码而未展示类的上下文。若是这种情况,你需要通过类的实例调用该方法(比如my_instance.create_unique_files_dict(...)),而非直接调用函数名。
验证方式
重新执行函数定义的单元格后,可通过以下代码确认当前内存中函数的参数签名:
import inspect print(inspect.signature(create_unique_files_dict))
若输出为(data_path, extension),说明函数已更新为最新版本,此时再调用就不会触发报错。
内容的提问来源于stack exchange,提问作者Arthur Lee

