python - PyCharm:这种自动签名重构可能吗?

标签 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_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 参数进行重新排序,但不会将位置参数更改为关键字参数(在调用中)。这只是当前的限制还是我缺少某种自动执行此操作的方法?

最佳答案

因为 Python 3 的 keyword-only arguments现在 PyCharm 支持,您可以通过在 Changesignature 对话框中添加 * 作为第一个参数来执行上述重构。

关于python - PyCharm:这种自动签名重构可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47978893/

相关文章:

refactoring - Eclipse CDT 重构项目死了吗?

python - 在特定条件下计算日期之间

python - Pandas DataFrame 删除重复项,保留第一个 'x' 出现的位置

python - PyCharm - 如何自动将项目中的所有标识符重命名为snake_case?

python - PyCharm 不识别字典值类型

c# - 如何重构一堆方法使其静态化?

android-studio - Android Studio - Flutter 插件 - 通过重构将方法移动到另一个文件

python - 带有ndb的Google AppEngine中的Memcache set_multi()错误

python - Django:同一浏览器中的两个 session

docker - Pycharm 2016.1.4(最新)和 Docker 问题