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))
|
||
|
----
|
||
|
|