title: python默认参数为迭代类型
top: 43
date: 2022-09-01 11:06:16
tags:
- python
categories: - python
当list, dict
等可迭代类型作为默认参数时,只会在定义函数的时候执行一次,有点像静态变量,定义一次后面一直使用。在之后使用函数的过程中,如果没有对默认参数进行赋值,那么将会一直使用这个初始的变量。
def ato(num, ml=[], md=()):
print(id(ml))
ml.append(num)
print(ml)
print('--'*8,id(md))
ato(1)
ato(2, [2,3]) #####
ato(3)
def funca():
ato(11)
ato(12)
ato(31)
funca()
"""output
140390234809968
[1]
---------------- 140390252151376
140390234809088 #####
[2, 3, 2]
---------------- 140390252151376
140390234809968
[1, 3]
---------------- 140390252151376
140390234809968
[1, 3, 11]
---------------- 140390252151376
140390234809968
[1, 3, 11, 12]
---------------- 140390252151376
140390234809968
[1, 3, 11, 12, 31]
---------------- 140390252151376
"""