First, that's a default value, not a keyword argument. If you want to pass keyword arguments, that would look like this:
def test1(ec):
print(ec)
test1(ec=True)
Second, unlike most languages with default argument values, Python evaluates default values at function definition time, not function call time. This is an extremely unusual design decision that causes a lot of problems. The typical workaround is to use a sentinel value like None
as the default, and compute the "real" default inside the function if the sentinel is detected:
EC = True
def test1(ec=None):
if ec is None:
ec = EC
print(ec, EC)
def test2():
global EC
EC=False
test1()
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…