家装网站做,网站开发流程6个阶段,科技有限公司简介模板,企业 网站 设计1. 可变类型作为参数
可变对象: list/set/dict
参数会指向可变对象的副本的地址#xff0c;每次修改的是同一个对象。
def flist(l):l.append(0)print(l)ll []
flist(ll)
flist(ll)输出为#xff1a; [0] [0, 0]
# 注意#xff1a;l只是ll的一个副本#xff0c;修改l不…1. 可变类型作为参数
可变对象: list/set/dict
参数会指向可变对象的副本的地址每次修改的是同一个对象。
def flist(l):l.append(0)print(l)ll []
flist(ll)
flist(ll)输出为 [0] [0, 0]
# 注意l只是ll的一个副本修改l不会改变ll的值
def clear_list(l):l []ll [1,2,3]
clear_list(ll)
print(ll)输出为 [1, 2, 3]
注意参数每次指向同一个对象的地址。
def flist(l[1]):l.append(1)print(l)flist()
flist()输出为 [1, 1] [1, 1, 1]
2. 不可变类型作为参数
不可变对象bool/int/float/tuple/str/frozenset
每次执行函数会建立一个不可变对象的副本因此参数每次指向一个新的不可变对象的地址。
def fstr(s):s aprint(s)s hehe
fstr(s)
fstr(s)输出为 hehea hehea
3. 关键字参数
*args被打包成tuple **kwargs被打包成dict
def print_multiple_args(*args):print(type(args), args)for idx, val in enumerate(args):print(idx, val)print_multiple_args(a, b, c)另一种方式为
def print_multiple_args(*args):print(type(args), args)for idx, val in enumerate(args):print(idx, val)print_multiple_args(*[a, b, c])输出为 class ‘tuple’ (‘a’, ‘b’, ‘c’) 0 a 1 b 2 c
def print_kwargs(**kwargs):print(type(kwargs), kwargs)for k, v in kwargs.items():print({}: {}.format(k, v))print_kwargs(a1, b2, c3, d4)另一种方式为
def print_kwargs(**kwargs):print(type(kwargs), kwargs)for k, v in kwargs.items():print({}: {}.format(k, v))print_kwargs(**dict(a1, b2, c3, d4))输出为 class ‘dict’ {‘a’: 1, ‘b’: 2, ‘c’: 3, ‘d’: 4} a: 1 b: 2 c: 3 d: 4
def print_all(a, *args, **kwargs):print(a)if args:print(args)if kwargs:print(kwargs)print_all(hello, world, nameJack)输出为 hello (‘world’,) {‘name’: ‘Jack’}