您的位置:首页 > 文旅 > 美景 > 网页设计与制作教程知识点总结_人工客服系统_外链代发免费_上海品牌推广公司

网页设计与制作教程知识点总结_人工客服系统_外链代发免费_上海品牌推广公司

2024/10/4 22:25:30 来源:https://blog.csdn.net/liugan528/article/details/142652658  浏览:    关键词:网页设计与制作教程知识点总结_人工客服系统_外链代发免费_上海品牌推广公司
网页设计与制作教程知识点总结_人工客服系统_外链代发免费_上海品牌推广公司

1. 使用一个星号*作为函数

1.1 收集多余的位置参数

收集多余的位置参数: 当你在函数定义中使用*args时,它会收集所有未命名的位置参数并将它们放入一个元组中。

当函数参数前面加一个星号*时,函数可以接收任意数量的位置参数。通常,这种参数被命名为*args,但名字可以随意。

def foo(*args):print(type(args))  # <class 'tuple'>for arg in args:print(arg)def bar(a, b, *args):print(type(args))  # <class 'tuple'>for arg in args:print(arg)foo(1,2,3,'a','b',3.6)
print('-'*30)
bar(1,2,3,'a','b',3.6)

输出:

<class 'tuple'>
1
2
3
a
b
3.6
------------------------------
<class 'tuple'>
3
a
b
3.6

1.2 解包列表或元组

在调用函数时,* 也可以用来解包列表或元组,使其元素作为单独的位置参数传递。注意解包后的列表、元组元素个数要与函数参数相同。

def foo(a,b,c):return a+b+clst = [1,2,3]
tu = (2,3,4)print(foo(*lst))  # 6
print(foo(*tu))   # 9

1.3 强制关键字参数

如果你在参数列表中使用 *,它会要求在它之后的所有参数必须以关键字方式传递。
03.onestar.py

def foo(arg1, arg2, *, kwarg1, kwarg2):print(arg1, arg2, kwarg1, kwarg2)

调用foo(1,2, kwarg1= 3, kwarg2 = 4)输出:

1 2 3 4

调用foo(1,2, 3, 4),报错:

Traceback (most recent call last):File "03.onestar.py", line 31, in <module>foo(1,2, 3, 4)
TypeError: foo() takes 2 positional arguments but 4 were given

2. 使用两个星号**作为函数

2.1 收集多余的关键字参数

当在函数定义中使用**kwargs时,它会收集所有未命名的关键字参数并将它们放入一个字典中。
04.twostar.py

def foo(**kwargs):print(kwargs)print(type(kwargs))for key, value in kwargs.items():print(f'{key}: {value}')foo(a=1, b=2.3, c='stockA')

输出:

{'a': 1, 'b': 2.3, 'c': 'stockA'}
<class 'dict'>
a: 1
b: 2.3
c: stockA

2.2 解包字典为关键字参数

在调用函数时,**可以用来解包字典,使其键值对作为关键字参数传递。

def foo(name, age, job):print(f'{name} is {age} years old, as a {job}')info = {"name":'garrylau', "age":30, "job":"Engineer"}foo(**info)

输出:

garrylau is 30 years old, as a Engineer

2.3 结合使用普通参数、*args**kwargs

def foo(a,b, *args, **kwargs):print(a)        # 普通参数print(b)        # 普通参数print(args)     # 捕获所有的位置参数print(kwargs)   # 捕获所有的关键字参数foo(1, 2.3, 666, 'freedom', 'positio

输出:

1
2.3
(666, 'freedom', 'positional argument BEFORE keyword argument')
{'name': 'stockA', 'job': 'Engineer'}

2.4 强制关键字参数和位置参数结合

如果你在参数列表中使用 *,它会要求在它之后的所有参数必须以关键字方式传递。

def foo(arg1, arg2, *, kwarg1, kwarg2 , **kwargs):print(arg1, arg2, kwarg1, kwarg2, kwargs)print(type(arg1), type(arg2), type(kwarg1), type(kwarg2), type(kwargs))foo(1,2, kwarg1='name', kwarg2='age', extra1 = 3, extra2 = 4)

输出:

1 2 name age {'extra1': 3, 'extra2': 4}
<class 'int'> <class 'int'> <class 'str'> <class 'str'> <class 'dict'>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com