2025年python参数(或者函数传参)前面的单星-或双星--的使用介绍

python参数(或者函数传参)前面的单星-或双星--的使用介绍1 问题描述 当我们在使用 python 进行编码时 发现里面有单星号或者双星号 总是分不清楚他们的区别 这也导致不知道我们如何去使用它 下面 我将介绍单星号或者双星号的使用情况 2 单星号使用情况 1 元组解包 在对一个元组进行解包时 变量的数量必须和元组中的元素的数量一致

大家好,我是讯享网,很高兴认识大家。

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) 
  • 形参只能有一个,并且必须写在所有参数的最后。
小讯
上一篇 2025-03-29 19:20
下一篇 2025-02-17 12:21

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/46785.html