如何在python中检测不正确的kwarg名称
我刚刚发现函数如何在python中检测不正确的kwarg名称,python,pandas,deprecated,Python,Pandas,Deprecated,我刚刚发现函数pandas.read\u excel()的kwargskip\u footer在版本0.23.0中被弃用,现在被称为skipfooter。似乎skip\u footer被默默地忽略了,这使得我很难弄清楚为什么我的代码停止了应有的工作 编辑: 好吧,我撒谎了:我实际上在使用pandas.ExcelFile.parse()。文档表明它们采用相同的参数,但在源代码中似乎有一些小差异——包括这个参数。(据我所知)我没有压制或忽视警告 当我使用不正确的kwarg时,是否有方法获取警告或异常
pandas.read\u excel()
的kwargskip\u footer
在版本0.23.0中被弃用,现在被称为skipfooter
。似乎skip\u footer
被默默地忽略了,这使得我很难弄清楚为什么我的代码停止了应有的工作
编辑:
好吧,我撒谎了:我实际上在使用pandas.ExcelFile.parse()。文档表明它们采用相同的参数,但在源代码中似乎有一些小差异——包括这个参数。(据我所知)我没有压制或忽视警告
当我使用不正确的kwarg时,是否有方法获取警告或异常以提醒我?查看
pandas.ExcelFile.parse()
源代码,它不会检查**KWD
中的跳过页脚,也不会检查它使用的底层方法和函数
因此,它确实会默默地忽略大多数未知的关键字
虽然Python抱怨缺少位置参数,但它无法检查关键字参数。顺便说一句,该语言中没有内置机制来支持这一点
可以编写单个函数以拒绝无效关键字:
def kwtest(**kwds):
allowed = {'spam', 'eggs', 'cheese'}
invalid = set(kwds.keys()) - allowed
if invalid:
raise ValueError(f'invalid keyword arguments {invalid}')
(旧答案)
根据和for Pandas的说明,skip_footer
关键字参数仍然存在
但是,read\u excel
函数用@deprecate\u kwarg
装饰符标记为跳过页脚
。据我所知,使用skip_footer
关键字参数应该会引发FutureWarning
异常
您是否正在抑制或忽略警告?好的,我撒谎了:我实际上在使用pandas.ExcelFile.parse()
。文档表明它们采用相同的参数,但在源代码中似乎有一些小差异——包括这个参数。(据我所知)我没有压制或忽视警告。那么,这是否意味着当我使用不推荐使用的关键字或甚至拼写错误的关键字时,100%不可能向我发出警报?@adr唯一向您发出警报的方法是,相关函数显式测试所有关键字参数,并在发现无效关键字参数时引发异常。