ฉันรู้ว่าข้อโต้แย้งเริ่มต้นจะถูกสร้างขึ้นในเวลาเริ่มต้นฟังก์ชั่นและไม่ได้ทุกครั้งที่ฟังก์ชั่นที่เรียกว่า ดูรหัสต่อไปนี้:
def ook (item, lst=[]):
lst.append(item)
print 'ook', lst
def eek (item, lst=None):
if lst is None: lst = []
lst.append(item)
print 'eek', lst
max = 3
for x in xrange(max):
ook(x)
for x in xrange(max):
eek(x)
สิ่งที่ฉันไม่ได้รับคือสาเหตุที่ทำให้เกิดสิ่งนี้ขึ้น พฤติกรรมนี้มีประโยชน์อย่างไรในการเริ่มต้นในแต่ละครั้งที่โทร?