项目的Python代码有很多函数定义和调用,如:
def some_function(a, b="", c=0, d=None, e="something"):
# whatever
pass
some_function("a", "b", 1, e="something else")
这非常多毛(糟糕的做法 - 缺少背景等),我想自动将其更改为:
some_function(a="a", b="b", c=1, e="something else")
(好吧,在某些情况下,第一个位置参数可以保持不变)
在许多情况下,关键字参数的顺序不同,因此也可以根据函数定义顺序排列:
def some_method(self, a, b=1, c=2): pass
obj.some_method(a, c=12, b=0) -> obj.some_method(a, b=0, c=12)
PyCharm可以使用它的重构>更改签名有什么帮助吗?
好吧,PyCharm执行kw参数重新排序,但不会改变关键字参数的位置参数(在调用中)。这只是当前的限制还是我错过了一些自动完成的方法?
答案 0 :(得分:1)
这里有一种方式:
将光标放到函数定义和Refactor>更改签名
在第一个参数之前添加一些伪参数(例如,REMOVEME
),默认值应该是kw参数,但是在所有位置参数之后(没有默认值)
重构
再次转到签名重构,删除伪参数和重构。
现在所有调用都使用位置参数,在适当的时候正确重新排序。
注意:不能100%工作,在某些情况下会留下逗号,这可能是一个错误。另外,有时会在调用中删除**kwargs
...
答案 1 :(得分:0)
由于 PyCharm 现在支持 Python 3 的 keyword-only arguments,您可以通过在 *
对话框中添加 Change signature
作为第一个参数来执行上述重构。