37 lines
920 B
Plaintext
37 lines
920 B
Plaintext
=== on 21 Nov 2019, 18:13:10 Nicolas Harraudeau wrote:
|
|
Closing this rule as it would raise many False Positives. I see multiple cases where passing ``++**kwargs++`` or ``++*args++`` is perfectly fine:
|
|
|
|
1/ building an argument list on the fly. Example:
|
|
|
|
----
|
|
options = {}
|
|
if condition:
|
|
options[key] = value
|
|
myfunction(**options)
|
|
|
|
# One could argue that this is equivalent:
|
|
key = default
|
|
if condition:
|
|
key = value
|
|
myfunction(key = value)
|
|
# But actually this overrides the default value of "key" set in myfunction.
|
|
----
|
|
|
|
2/ It is very common to forward arguments you don't know much about from a caller to another method/function.
|
|
|
|
|
|
----
|
|
def myfilter(func):
|
|
def decorator(*args, c=None, **kwargs):
|
|
if c is None or c < 0:
|
|
return None
|
|
return func(c=c, *args, **kwargs)
|
|
return decorator
|
|
|
|
@myfilter
|
|
def myfunction(a, b, *args, c=None):
|
|
return 42
|
|
print(myfunction(1,2,c=-1))
|
|
----
|
|
|