1、问题描述
当我们在使用python进行编码时,发现里面有单星号或者双星号,总是分不清楚他们的区别,这也导致不知道我们如何去使用它。下面,我将介绍单星号或者双星号的使用情况。
2、单星号使用情况
(1)元组解包
在对一个元组进行解包时,变量的数量必须和元组中的元素的数量一致;也可以在变量前边添加一个星号,这样变量将会获取元组中所有剩余的元素。
代码如下:
my_tuple = 10, 20, 30, 40
a, b, *c = my_tuple
# 输出:10 20 [30, 40]
print(a, b, c)
(2)用于不定长参数传参
在定义函数时,可以在形参前边加上一个*,这样这个形参将会获取到所有的实参。
比如:*nums会接受所有的位置实参,并且会将这些实参统一保存到一个元组中(装包)。代码如下:
# 参数以元组(tuple)的形式导入
def sum1(*nums):
# 定义一个变量,来保存结果
result = 0
# 遍历元组,并将元组中的数进行累加
for n in nums:
result += n
print(result)
# 执行,输出:6
sum(1,2,3)
- 1、带星号的形参只能有一个,可以和其他参数配合使用。
# 第一个参数给a,第二个参数给b,剩下的都保存到c的元组中
def fn1(a, b, *c):
print('a =', a)
print('b =', b)
print('c =', c)
# 执行
#输出结果如下:参数c包含两个数据3,4。
#a = 1
#b = 2
#c = (3, 4)
"""
fn1(1, 2, 3, 4)
- 2、可变参数不是必须写在最后,但是注意,带*的参数后的所有参数,必须以关键字参数的形式传递。
# 第一个参数给a,剩下的位置参数给b的元组,c必须使用关键字参数。
def fn2(a, *b, c):
print('a =', a)
print('b =', b)
print('c =', c)
# 执行,参数c以关键字参数传递。
""" 输出结果如下: a = 1 b = (2, 3) c = 4 """
fn2(1, 2, 3, c=4)
3、双星号使用情况
双星号(**):**kwargs表示将参数以字典的形式导入。
(1)接收其他的关键字参数,它会将这些参数统一保存到一个字典中。
字典的key就是参数的名字,字典的value就是参数的值。
def fn3(a, b, **c):
print('a =', a)
print('b =', b)
print('c =', c)
""" 输出: a = 1 b = 2 c = {'c': 3, 'd': 4} # 是一个字典类型的数据 """
fn3(a=1, b=2, c=3, d=4)
""" 输出: a = 1 b = 2 c = {'c': 3, 'd': 4} """
fn3(1, 2, c=3, d=4)
(2)对字典进行一个解包
def fn4(a, b, c):
print('a =', a)
print('b =', b)
print('c =', c)
# 创建一个字典
d = {
'a': 100, 'b': 200, 'c': 300}
""" 输出: a = 100 b = 200 c = 300 """
fn4(**d)
(3)这两个用法可以同时出现在一个函数中
""" 输出: 1 2 (3, 4) {'e': 5, 'f': 6, 'g': 7} """
def foo(a, b=10, *args, **kwargs):
print(a)
print(b)
print(args)
print(kwargs)
foo(1, 2, 3, 4, e=5, f=6, g=7)
- **形参只能有一个,并且必须写在所有参数的最后。
今天的文章python参数一个星号_python变量前加星号「建议收藏」分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/89032.html