You can check it from foo.__defaults__
and foo.__kwdefaults__
посмотрите, что простой пример ревет
def foo(a, b, c=123, d=456, *, e=789, f=100):
print(foo.__defaults__)
# (123, 456)
print(foo.__kwdefaults__)
# {'e': 789, 'f': 100}
print(a, b, c, d, e, f)
#and these variables are also accessible out of function body
print(foo.__defaults__)
# (123, 456)
print(foo.__kwdefaults__)
# {'e': 789, 'f': 100}
foo.__kwdefaults__['e'] = 100500
foo(1, 2)
#(123, 456)
#{'f': 100, 'e': 100500}
#1 2 123 456 100500 100
тогда при помощи оператора =
и
, можно сравнить их
и поскольку некоторый кодовый рев случаев достаточно
Например, необходимо постараться не изменять значение по умолчанию тогда, можно проверить равенство и затем справиться раз так
def update_and_show(data=Example):
if data is Example:
data = copy.deepcopy(data)
update_inplace(data) #some operation
print(data)