Python PyCharm:这种自动签名重构可能吗?
项目的Python代码有很多函数定义和调用,如:Python PyCharm:这种自动签名重构可能吗?,python,pycharm,automated-refactoring,method-signature,function-signature,Python,Pycharm,Automated Refactoring,Method Signature,Function Signature,项目的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_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参数进行重新排序,但不会将位置参数更改为关键字参数(在调用中)。这仅仅是当前的限制,还是我缺少一些自动执行的方法?这里有一种方法:
REMOVEME
),第一个参数应该是kw参数,但在所有位置参数之后(没有默认值)注意:不能100%工作,在某些情况下会留下逗号,这可能是一个错误。另外,有时在调用中剥离
**kwargs因为PyCharm现在支持Python 3,所以您可以通过在更改签名
对话框中添加*
作为第一个参数来执行上述重构。在我发布问题后的两分钟内,我自己找到了答案!请随时发布更简单的方式,如果有的话