python:函数传参(实参与形参
python:函数传参(实参与形参)
一、函数的参数
在函数定义与调用时,我们可以根据自己的需求来实现参数的传递。在python中,函数的参数一共有两种形式:①形参 ② 实参
形参:在函数定义时,所编写的函数参数就是形式参数(形参)。
实参:在调用函数时,所传递的函数参数就是实际参数(实参)。
def func1(num): # 函数定义 num是一个形参
d_num = num * 2
return d_num
func1(10) # 函数调用 10是一个实参
- num只有在函数定义时才声明的变量,是局部变量,而 num = 10 代表实参, 是全局变量。
二、函数的参数类型(调用)
1、位置参数
理论上,在函数定义时,我们可以为其定义多个参数。在调用函数时,我们也应该传递多个参数,正常情况参数位置要一一对应。
def func(name, age, mobile):
print(f'姓名:{name},年龄:{age},手机号码:{mobile}')
# 位置传参时,注意要一一对应传递参数
func('Tom', 23, 1234)
注意事项:位置参数强调的参数传递的位置要一一对应,顺序不能颠倒。
2、关键词参数(python特有)
函数调用,通过键 = 值形式加以指定,可以让函数更加清晰,容易使用,同时也清除了参数的顺序需求。
def func(name, age, mobile):
print(f'姓名:{name},年龄:{age},手机号码:{mobile}')
# 关键词传参
func(age=23, name='Jack', mobile=10086)
三、函数的缺省参数(默认值参数)
在函数定义时,我们可以给定函数的某个参数一个默认值def func(name, age, sex = '男')
,在函数调用传参时,可以不传入实参,使用默认值,如果想修改也可以传入实参。
def func(name, age, sex = '男'):
print(f'姓名:{name},年龄:{age},性别:{sex}')
func(name = 'Tom', age = 19) # 默认参数sex = '男'
func(name = 'Harry', age = 20, sex = '女') # 修改参数 sex = '女'
- 注意,在定义函数时, 默认值参数一定要放在普通参数后面。
四、不定长参数
不定长参数也称为可变参数,用于不确定调用函数的时候传递多少个参数的情景。
此时,可用包裹(packing)位置参数,或者包裹关键字参数,来进行参数传递。
*args:不定长位置参数(不定长元组参数),*args代表固定方式,args代表变量名称,主要用于接收不定长位置参数
**kargs:不定长关键词参数(不定长字典参数),**kwargs代表固定方式,kwargs代表变量名称,主要用来接收不定长关键词参数
# 不定长位置参数(不定长元组参数)
def func1(*args):
print(args)
func1()
func1(1)
func1(1, 2)
func1(1, 2, 3)
# 不定长关键词参数(不定长字典参数)
def func2(**kwargs):
print(kwargs)
func2()
func2(a=1)
func2(a=1, b=2)
案例:*args
与**kwargs
的结合使用
- 在定义函数与传参时,*args放在左边,**kwargs放在右边
def func1(*args, **kwargs):
print(args)
print(kwargs)
func1(1, 2, 3, a=4, b=5) # 1,2,3被args接收,4,5被kwargs接收
- *args还可以专门用来接收列表类型或元组类型的数据
- **kwargs还可以用来接收字典类型的数据
调用时:func1(*list1, **dict1)
list1 = [1, 2, 3]
dict1 = {'a': 4, 'b': 5}
def func(*args, **kwargs):
sum1 = 0
for i in list1:
sum1 += i
for i in kwargs.values():
sum1 += i
return sum1
print(func(*list1, **dict1)) # 在传参的时候*别忘
五、参数混用情况
在python中有三种参数:
1、普通参数(位置参数,关键词参数) def func(name, age, mobile)
2、缺省参数(默认值参数) def func(name, age, sex = '男')
3、不定长参数 def func2(**kwargs)
以上三种参数可以混合使用,但是特别注意,顺序很重要:
def func(① 普通参数 ② *args ③ 缺省参数 ④ **kwargs):
pass
- 在传参时,普通参数一定要传参(不管是用位置传参还是关键词传参)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!