day10:函数的实参&形参
分类:Python作者:编程之家用户
函数的参数 (参数:配合函数运算的值)
参数:
(1)形参:形式参数,在函数的定义处
(2)实参:实际参数,在函数的调用处
形参: 普通形参(位置),默认形参,普通收集形参,命名关键字形参,关键字收集形参
实参: 普通实参,关键字实参
遵循原则:
形参和实参要一一对应
1.普通形参
# 1.普通形参
# 函数的定义处
"""hang,lie是函数的普通形参"""
def s_star(hang,lie):
i = 0
while i < hang:
j = 0
while j < lie:
print("*",end="")
j+=1
print()
i+=1
函数的调用处
10,10 是函数的实际参数"""
s_star(10,10)
s_star(3,8)
2.默认形参
2.默认形参
def s_star(hang=10,lie=10):
i =
在函数调用时:
如果给予实参,那么直接使用实际参数
如果没有给予实参,那么使用参数默认自带的值
s_star() 10行10列小星星
s_star(3,8) 3行8列小星星
s_star(4) 4行10列小星星
3.普通形参+默认形参
默认形参必须跟在普通形参的身后,顺序是一定的
3.普通形参 + 默认形参def s_star(hang,1)"> 函数的调用处
s_star(3,3) 3行3列
s_star(3) 3行10列
s_star() error
4.关键字实参
关键字实参是对具体的某个参数赋值,具体的顺序可以打乱
4.关键字实参
函数的定义处
()
i+=1
函数的调用处
s_star(hang=4,a=1,b=2,c=3,d=4,lie=5)
s_star(c=3,lie=5,hang=4,b=2) 关键字实参参数顺序可以打乱
5.普通实参+关键字实参
关键字实参必须跟在普通实参的身后,1)"> 5.普通实参 + 关键字实参
s_star(5,6,99,c=7,d=8,lie=9)
s_star(c=7,lie=9,5,99) error 关键字实参必须跟在普通实参的后面
s_star(5,1,c=2,d=3,lie=10,b=5) ok
s_star(5,a=5) error 重复给a赋值,错误
6.要注意区分默认形参和关键字实参
默认参数和关键字实参 在写法上一模一样
默认形参是在函数的定义处
关键字实参是在函数的调用处
7.普通收集参数 *args
1.普通收集参数: 专门用来收集多余的没人要的普通实参
def func(*args):
code...
*args => arguments(参数)
在args这个参数的前面加上一个*表达普通收集参数,形成一个元组
"""
基本使用
def func(a,*args):
print(a,c) 1 2 3
print(args) (4,7,8)
func(1,2,3,4,8)
计算任意个数的累加和
def func(*args):
total =for i in args:
total += i
(total)
func(1,10,11,100)
8.关键字收集参数 **kwargs
2.关键字收集参数 : 专门用来收集多余的没人要的关键字实参
def func(**kwargs):
code1...
**kwargs => keyword arguments
在kwargs参数的前面加上2个**表达关键字收集参数,形成一个字典
def func(a=1,**kwargs):
(a,c)
print(kwargs) {'f': 1,'g': 2,'j': 3}
func(f=1,g=2,j=3,a=15,b=16,c=17 任意个数字符串的拼接
班长:宋云杰
班花:刘彩霞
班草:刘子涛
吃瓜群众:牧树人,晏国彰,刘聪
def func(**(kwargs)
定义一个字典,存放每一位同学的身份
dic = {monitor":班长class_flower班花class_grass班草"}
strvar1 =
strvar2 = ""
遍历字典中的键值对
for k,v kwargs.items():
print(k,v) monitor 宋云杰 class_flower 刘彩霞 class_grass 刘子涛 ....
判断键是否在字典当中,如果在,获取对应的身份,拼装成字符串
if k dic:
strvar1 += dic[k] + :" + v + \n" 班长 + ":" + 宋云杰 + '\n'
else:
strvar2 += v + ,"
去掉右边多余的\n和,形成最后的效果
(strvar1.strip())
吃瓜群众:"+ strvar2.rstrip())
func(monitor=宋云杰刘彩霞刘子涛牧树人晏国彰刘聪")
9.命名关键字参数
3.命名关键字参数
定义命名关键字参数的两种方式:
(1)def func(a,*,c) c是命名关键字
(2)def func(*args,**kwargs) c是命名关键字参数
在函数调用时,必须使用命名关键字参数来进行赋值
定义方式一
1 2
print(d) 3
print(c) 10
定义方式二
def func(*args,1)"> (1,6)
100
{'a': 1,'b': 2,'d': 6}
func(1,d=6,c=100)
10.关于* 和 ** 的使用方法
* 和 ** 在函数的定义处,用来做收集操作,打包
* 和 ** 在函数的调用处,1)">打散操作,解包
* 解包列表
(c,d)
lst = [1,2]
*把列表里面的所有元素拿出来,当成参数一个一个赋值给func进行调用
func(*lst,d=4 ** 解包字典
c":3,1)">d":4}
**把字典里面的所有元素拿出来,拼装成键=值的参数形式,赋值给func进行调用
func(1,**dic,) func( c=3,d=4 )
*和**的组合
func(*lst,1)">dic)
strvar = abc"
print(*strvar)
11.形参定义的顺序
当所有参数都在一起的时候,按照什么顺序定义呢?
参数定义的顺序:普通参数 -> 默认参数 -> 普通收集参数 -> 命名关键字参数 -> 关键字收集参数
收集到所有的实参: def func(*args,**kwargs)
12.关于所有参数混合的练习题
def f1(a,c=0,*args,1)">kw):
'a =',1)">b =c =args =kw ='def f2(a,1)">d = 以上两个函数 打印结果
第一题
f1(1,2) a=1,args=(),kw={}
f1(1,c=3) ab')
f2(1,d=99,ext=None) 第二题
args = (1,4)
kw = {': 99,1)">x': #}
f1(*args,**kw) 第三题
myargs = (1,3)
mykw = {': 88,1)">}
f2(*myargs,**mykw) a=1,d=88,kw={x:#}
第四题
(d)
f1(1,d=67,x=99,y=77) 版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。