一、函数初识
1、定义:将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可。
2、好处:代码重用;保持一致性;可扩展性。
3、示例如下:
# -*-coding:utf-8-*- def sayHello(): print('Hello world!') sayHello()
二、函数传参方式
如上面的实例是函数中最基础的一种,是不传参数的,说到这里,我们有必要了解一下何为函数参数:
1、函数参数:
形参变量: 只有在被调用时才分配内存单元,调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。
函数调用结束返回主调函数后不能再使用该形参变量
实参:可以是常量,变量,表达式,函数等,无论实参是何种类型的量,在进行函数调用,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值。
2、函数传参的分类
<1> 位置参数
位置参数顾名思义,就是调用函数时传的实参与函数的形参位置上一一对应的参数。
如下实例:
#位置参数 print('\n以下是位置参数传值\n') def stu_info(name,age,major,country): print('--------学生信息-------') print('姓名:',name) print('年龄:',age) print('专业:',major) print('国籍:',country) stu1 = stu_info('Jack',21,'Chinese','CN') # 实参依次与函数中的name,age,major,country对应 stu2 = stu_info('Frank',20,'JP','UN') stu3 = stu_info('Rose',19,'Art','UK')
<2> 默认参数
默认参数就有点不同了,是你在函数形参中定义好的,当实参中未传对应的参数时,它就派上用场了,默认给你加上。是不是有点贴心呢"htmlcode">
#默认参数 print('\n以下是默认参数传值\n') def stu_info(name,age,major,country = 'CN'):# country设为了默认参数,必须放在位置参数之后,否则会出错 print('--------学生信息-------') print('姓名:',name) print('年龄:',age) print('专业:',major) print('国籍:',country) stu1 = stu_info('Jack',21,'Chinese') # 此处未传对应的值,但形参中已经定义了,所以不用担心找不家了! stu2 = stu_info('Frank',20,'JP') # 你也是的 stu3 = stu_info('Rose',19,'Art','UK') # 既然你已经传参了,就随你了。
<3> 关键参数
正常情况下,给函数传参数要按顺序,不想按顺序就可以用关键参数,只需指定参数名即可(指定参数名的参数就叫关键参数),但记住一个要求就是,关键参数必须放在位置参数(以位置顺序确定对应关系的参数)之后。
还是奉上实例:
#关键参数,不能重复赋值,且指定的参数应在位置参数之后 print('\n以下是关键参数传值\n') def stu_info(name,age,major,country = 'CN'): # print('--------学生信息-------') print('姓名:',name) print('年龄:',age) print('专业:',major) print('国籍:',country) stu1 = stu_info('Jack',21,'Chinese') stu2 = stu_info('Frank',20,major='JP') # major即为关键参数,单独指定,但必须放在位置参数之后 stu3 = stu_info('Rose',19,'Art',country='UK')
<4> 非固定传参
这种传参方式可就大有讲究了,花样可谓繁多,自然本领也就大多了,不信往下看。
可以细分为两类:
非固定传参方式一:
可同时指定多个用户,传过来的所有参数打包成元祖。如下:
#-*-coding:utf-8-*- #方式一 def send_alert(msg,*users): # '*users‘ 表示非固定传参,可同时指定多个用户,传过来的所有参数打包元祖 for u in users: print('报警!请及时查看...',u,msg) send_alert('你的系统已濒临崩溃!','cc','hyt','yuq','dy') #方式二 def send_alert(msg,*users): # '*users‘ 表示非固定传参,可同时指定多个用户,传过来的所有参数打包元祖 for u in users: print('报警!请及时查看...',u,msg) send_alert('你的系统已濒临崩溃!',*['cc','hyt','yuq','dy']) ''' 如果列表前不加 * 号,整个列表就会被当作元组里的一个元素, 加 * 号后就相当于列表里每个元素都是元祖的一个元素了。就会向元组里的每个成员都发出讯息了。 ''' def send_alert(msg,*users,age): for u in users: print('报警!请及时查看...',u,msg) send_alert('你的系统已濒临崩溃!','sc','qh',age=22) ''' '*users‘此时会默认获取前一个位置参数之后所有的元素,若传参时最后不指定关键参数就会报错,age无法获取传值 '''
非固定传参方式二:
可同时指定多个用户,传过来的所有参数打包成元组或字典。如下:
#-*-coding:utf-8-*- def func(name,*args,**kwargs): # 形参依次是位置参数,元组,字典 print(name,args,kwargs) func('Hope',22,'CN','tomorrow') #输出:Hope (22, 'CN', 'tomorrow') {} func('Try',21,'will',addr='HG',num=666) #输出:Try (21, 'will') {'addr': 'HG', 'num': 666} dit = {'major':'Math','interest':'reading'} func('want',*['day','up'],**dit) #输出:want ('day', 'up') {'major': 'Math', 'interest': 'reading'}
小伙伴们到这里,Python中函数常用的传参方式你就都了解了?是不是又长姿势了呢!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]