0
Pythonのオプションの引数の動作を関数で記述できますか?関数内のPython 3.5のオプションの引数
私の理解では、オプションの引数は関数定義のデフォルト値を使用していました。
次のコードは正しい動作をしています。
# Function
def testf2(val=0):
val += 5
print(val)
val=0
return
# Testing
testf2()
testf2(10)
testf2()
# Output:
5
15
5
しかし、オプションのリストを使用した同様のコードでは、まったく異なる動作がなぜ発生するのかわかりません。この関数は、リストがval = []によってクリアされても、いくつかのデータを記憶します。
# Function
def testf(val=[]):
val.append("OK")
print(val)
val=[]
return
# Testing
testf()
testf(["myString"])
testf()
testf(["mySecondString"])
testf()
# Output:
['OK'] #excpected ['OK']
['myString', 'OK'] #excpected ['myString']
['OK', 'OK'] #excpected ['OK']
['mySecondString', 'OK'] #excpected ['mySecondString']
['OK', 'OK', 'OK'] #excpected ['OK']
ご協力いただきありがとうございます。