Python函数定义及传参方式详解(4种)
作者:暮光微凉 发布时间:2022-08-16 14:39:08
一、函数初识
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> 默认参数
默认参数就有点不同了,是你在函数形参中定义好的,当实参中未传对应的参数时,它就派上用场了,默认给你加上。是不是有点贴心呢?
注意:默认参数,必须放在位置参数之后,否则会出错
实例如下:
#默认参数
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中函数常用的传参方式你就都了解了?是不是又长姿势了呢!
来源:https://www.cnblogs.com/schut/p/8414899.html
猜你喜欢
- 设置密码保护SqlServer数据库备份文件! 备份SqlServer数据库 Backup Database [数据库] To disk=&
- 什么是生成器?生成器是一个包含了特殊关键字yield的函数。当被调用的时候,生成器函数返回一个生成器。可以使用send,throw,clos
- SQL SERVER用来判断表或视图存在的语句在ORACLE中不能用,请问该怎么写。谢谢。答案exists(select tnam
- 起步利用 html5 的 <video> 标签可以播放:<video width="320" heig
- 首先,我要在这里写上一些很官方的概念,意在说明面向对象是很具体化的,很实体的模式,不能让有些人看见“对象&rdq
- 从PHP生成HTML静态页面并存储到以年份和月份为名称创建的目录。读取全部数据批量生成,全部生成后弹出提示。可指定批次生成数量,建议不超过8
- 本文实例讲述了Python requests库用法。分享给大家供大家参考,具体如下:requests是Python中一个第三方库,基于 ur
- 前言 相信很多时候大家都会用到虚拟环境,他具有可以让你快速切换不同的python版本,
- random() 方法返回随机生成的一个实数,它在[0,1)范围内。random()返回随机生成的一个实数,范围在[0,1)之间语
- 一起画图吧为什么突然想搞这个画图软件呢不瞒各位,是因为最近接到了一个很小很小很小小得不能再小的小项目就是基于Tkinter,做一个简易的画图
- 一、基础概述机器学习(Machine Learing)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。机
- 以下的文章主要是介绍SQL Server数据库与其实际应用元数据,我前两天在相关网站看见SQL Server数据库与其实际应用元数据的资料,
- Tkinter库制作记事本现在为了创建这个记事本,你的系统中应该已经安装了 Python 3 和 Tkinter。您可以根据系统要求下载合适
- 继承是面向对象编程的一个重要的方式,通过继承,子类就可以扩展父类的功能。在python中一个类能继承自不止一个父类,这叫做python的多重
- 一般现今ASP木马常通过以下四点来操作服务器,所以我们只要将一下四处设置好就能从一 前使用IIS服务器的站长很多,特别是对于ASP网站来说,
- 代码如下:CREATE TABLE [dbo].[TbGuidTable]( [TableName] [varchar](50) NOT N
- 使用python实现简单倒计时exe,供大家参考,具体内容如下使用tkinter制作界面实现倒计时功能。使用time.sleep(1)实现
- 在网站的一些应用中需要提供用户直接打印页面的功能,最明显的就是电子优惠券,商家根据网站提供的模板输入内容,然后生成优惠券页面,用户打印这个页
- Python3 abs() 函数描述abs() 函数返回数字的绝对值。语法以下是 abs() 方法的语法:abs( x )参数x-- 数值表
- python中通过虚拟化出来一个空间,与主环境完全隔离,避免项目中对于环境要求,造成的插件版本混乱(python特别吃环境)mac 的配置前