博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
可变长参数
阅读量:5281 次
发布时间:2019-06-14

本文共 1449 字,大约阅读时间需要 4 分钟。

# 可变长参数

# 站在调用函数传递实参的角度 实参的个数不固定的情况
# 也就意味形参也不固定
# 站在形参的角度 可以用*和**来接收多余的(溢出的)位置参数和关键字参数

# 站在形参的角度 看 *

# 形参中的*会将多余的(溢出的)位置实参 统一用元组的形式处理 传递给*后面的形参名
# def func(x,y,*z):
# print(x,y,z) # z = (3, 4, 5, 6, 7, 8, 54, 43, 4, 5, 6, 6, 7, 8)
# func(1,2,3,4,5,6,7,8,54,43,4,5,6,6,7,8,)

# 站在实参的角度 看 *

# def func(x,y,z):
# print(x,y,z)
# # l = [1,2,3]
# # a,b,c = l
# # func(a,b,c)
# # func(*[1,2,3,4,5,6]) # *会将列表打散成位置实参一一传入等价于func(1,2,3,4,5,6)
# func(*(1,2,3)) # 等价于func(1,2,3)
# def func(x,*z):
# print(x,z)
# func(1,*{1,2,3}) # *在形参中只能接收多余的位置实参 不能接收关键字实参
# *只能将列表 元组 集合 字符串
# *的内部你可以看成是for循环

 

# 站在形参的角度看 **

# def func(x,y,**z):
# print(x,y,z) # z = {'z': 1, 'a': 1, 'b': 2, 'c': 3}
# func(x=1,y=2,z=1,a=1,b=2,c=3)
# **会接收所有多余的关键字参数 并将关键字参数 转换成字典的形式 字典的key就是关键字的名字
# 字典的value就是关键字的名字指向的值 将字典交给**后面的变量名

# 站在实参的角度看 **
def func(x,y,z):
print(x,y,z)
# func(12,3,4)
# func(x=1,y=2,z=3)
# d = {'x':1,'y':2,'z':333}
# func(x=1,y=2,z=3)
# func(**d) # 等价于func(x=1,y=2,z=333)
# **会将字典拆封成 key = value的形式

 

 

"""
总结 * 与 **
*在形参中能够接受多余的位置参数 组织成一个元祖赋值给*后面的变量名
**在形参中能够接受多余的关键字参数 组织成一个字典赋值给**后面的变量名
*:在实参中 *能够将列表 元祖 集合 字符串 打散成位置实参的形式传递给函数
(*就看成是for循环取值)
**:在实参中 能将字典打散成key = value的形式 按照关键字参数传递给函数
"""

# 需求 你写的函数 无论调用者按照正确传参的方式无论怎么传 你的函数都能够正常执行

# def func1(*x,**y):
# print(x,y)
# func1(1,2,3,4,5,6,x=1,y=2,z = 3)

"""

注意python推荐形参*和**通用的写法
"""
def func2(*args,**kwargs):
print(args,kwargs)
func2(1,2,3,4,5,6,x=1,y=2,z = 3)

转载于:https://www.cnblogs.com/yangxinpython/p/11159141.html

你可能感兴趣的文章
GIS案例学习笔记-多边形内部缓冲区地理模型
查看>>
关于美化滚动条的jquery.nicescroll插件
查看>>
ORACLE 与SQL SERVER SQL语言比较
查看>>
C#中MessageBox用法大全(转)
查看>>
二分图的最大匹配 匈牙利算法
查看>>
哈希注入工具wce 实战应用
查看>>
面试题:谈谈如何优化MYSQL数据库查询
查看>>
Clothes moths are on the march and heading your way - let the battle begin!
查看>>
Problem Collection I 位运算
查看>>
Linux下Tomcat指定JDK和设置内存大小
查看>>
ArrayList 和linkedList 插入比较
查看>>
车站分级(洛谷 1983)
查看>>
矩形覆盖(codevs 1101)
查看>>
缺失值填充
查看>>
c语言中的assert
查看>>
.Net转Java.03.受查异常和非受查异常
查看>>
Windows下PythonQt编译(vs2015+Qt5.11.2+PythonQt 3.2)
查看>>
第四章,十七章读书笔记
查看>>
### strcpy vs memcpy
查看>>
3 -9 文件的操作
查看>>