我正在使用 eric4 及其绳索插件来重构一些代码。我有很多方法,其签名使用*args
and**kwargs
语法。我想更改这些签名并删除此参数。
我试过使用,Refactoring>Refactoring>Change Method Signature
但这不会删除*args
和**kwargs
参数。
请问这是rope本身的限制,还是eric的插件不支持这个功能。
我正在使用 eric4 及其绳索插件来重构一些代码。我有很多方法,其签名使用*args
and**kwargs
语法。我想更改这些签名并删除此参数。
我试过使用,Refactoring>Refactoring>Change Method Signature
但这不会删除*args
和**kwargs
参数。
请问这是rope本身的限制,还是eric的插件不支持这个功能。
为什么要删除*args
and **kwargs
?要重构这些函数,重构库需要执行相当多的自省才能知道正确的参数。
例如,您将如何重构以下函数:
def f(*args, **kwargs):
a = args[0]
b = args[1]
c = kwargs.get('c', 3)
d = kwargs.get('d', 4)
print a, b, c, d
你可以把它变成:
def f(a, b, c=3, d=4):
print a, b, c, d
它已经需要相当多的代码分析才能做到这一点,而对于真正的功能来说,这更加困难。位置参数和关键字参数的数量可能会有所不同(例如,函数可以迭代args
),这使得很难确定正确的函数参数。
除非有真正的需要,否则我会保留*args
and**kwargs
并专注于其他重构工作。