Python3 中的单*和双**
Python3编程中会碰到单*和双**的情况,咋一看,会以为是C语言中的指针和二级指针,其实则不然。
以下我们示例介绍单*和双**的使用场景
常规单*和双**
单*,用于乘法或者倍数,如:
1 2 3 4 5 6 7 | print ( 2 * 3 ) # 数学乘法运算,值为 6 print ( "=" * 3 ) # 重复,返回 3个"=", 即 "===" """ 返回结果: 6 === """ |
双**,用于数学的N次方计算,如:
1 2 3 4 5 | print ( 2 * * 3 ) # 数学次方运算(2的3次方,即pow(2,3)),值为 8 """ 返回结果: 8 """ |
定义变量时,用于收集变量,并转换为list
单*,用于收集变量,并转换为list
1 2 3 4 5 6 7 8 9 10 | x,y, * z = ( "a" , "b" , "c" , "d" , "e" ) print (z) # 收集x,y之后的元素,并转换为list print ( * z) # 解包list,输出各个值 print (z[ 1 ]) """ 返回结果: ['c', 'd', 'e'] c d e d """ |
在函数定义中使用,用于收集参数
单*,扩展参数,并将参数各元素转化为tuple
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # *param,扩展参数并转换为tuple def func01( * param) : print (f "param is {param}" ) # *param,扩展剩余参数并转换为tuple def func02( str , * param): print (f "param is {param}" ) print (f "str is {str}" ) if __name__ = = "__main__" : # 收集参数 func01( "a" , "b" , "c" , "d" ) # 预期 ('a', 'b', 'c', 'd') func02( "a" , "b" , "c" , "d" ) # 预期 ('b', 'c', 'd') """ 返回结果: param is ('a', 'b', 'c', 'd') param is ('b', 'c', 'd') str is a """ |
双**,扩展参数,并将参数各元素转化为dict
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # **param,扩展参数并转换为dict def func11( * * param) : print (f "param is {param}" ) """ **param,扩展剩余参数并转换为dict, 需要注意的是传入的参数中必须包含 x """ def func12(x, * * param) : print (f "param is {param}" ) if __name__ = = "__main__" : # 收集参数 func11(x = "a" ,y = "b" ,z = "c" ) # 预期 { "x":"a", "y":"b", "z":"c" } func12(x = "a" ,y = "b" ,z = "c" ) # 预期 { "y":"b", "z":"c" } """ 返回结果: param is {'x': 'a', 'y': 'b', 'z': 'c'} param is {'y': 'b', 'z': 'c'} """ |
在函数调用时使用,用于分配参数
单*, 对tuple分配参数,按顺序分配参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | ### 调用函数时分配参数 # 定义普通参数函数 def func21(x,y) : print (f "x is {x}, y is {y}" ) if __name__ = = "__main__" : param = ( "a" , "b" ) # 调用函数时,分配参数 # 单*对tuple分配参数,按顺序分配参数 # 需要注意的是参数个数需与tuple元素个数相同,否则报错 func21( * param) # 预期 "a" 分配给 x, "b" 分配给 y print (param) """ 返回结果: x is a, y is b ('a', 'b') """ |
双**,对dict分配参数,dict则不关心顺序,按key->value对应
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | ### 调用函数时分配参数 # 定义普通参数函数 def func21(x,y) : print (f "x is {x}, y is {y}" ) if __name__ = = "__main__" : # 双*对dict分配参数,dict则不关心顺序,按key->value对应 # 同样的dict的key需与参数匹配,否则报错 param = { "y" : "b" , "x" : "a" } func21( * * param) # 预期 key "x"的值分配给 x, key "y"的值分配给 y print (param) """ 返回结果: x is a, y is b {'y': 'b', 'x': 'a'} """ |
- 上一篇: Python3 的参数对象
- 下一篇: 没有了