|
|
|
|
|
by codesnik
85 days ago
|
|
I wonder, why that kind of ambiguity or complexity even comes to your mind at all. Just because python is weird? def foo(self, arg=expression): could, and should work as if it was written like this (pseudocode) def foo(self, arg?):
if is_not_given(arg):
arg=expression if "expression" is a literal or a constructor, it'd be called right there and produce new object, if "expression" is a reference to an object in outer scope, it'd be still the same object. it's a simple code transformation, very, very predictable behavior, and most languages with closures and default values for arguments do it this way. Except python. |
|
> most languages with closures and default values for arguments do it this way.
Do these also evaluate function definitions at runtime?