标签:介绍 data default 结果 默认值 情况下 方式 war pytho
上一篇我们介绍了python函数的一些定义和基本的构成。 接下来我们介绍下函数的参数。
什么是函数的参数呢?
当我们定义函数的时候,经常会希望函数能够处理我们传入的数据。
这样可以更具有灵活性和通用性。
传给函数数据时,我们就会使用到参数。
参数有两种:形参(形式参数),实参(实际参数)。
参数用来把数据传给函数,让函数利用这个数据来执行
形参-形式参数:在函数定义时定义的参数就是形参。
实参-实际参数:当调用函数是,交给函数的参数就是实际参数。
下面简单的代码来举例:
def get_list_first_data(aaa): # aaa叫做形参(形式参数)
v = [11,22,33,44]
print(v[aaa])
get_list_first_data(1) # 1叫做实参(实际参数)
执行结果:
22
定义的形参(定义的是默认参数,万能参数的情况除外)和传入的实参需要数量相符。
默认参数:设置了默认值得参数。
参数的默认值,如果是可变类型,---有坑
def func(a1, a2=9): # a2默认值是9。a2(default parameter)必须定义在在a1(non-default parameter)的后面
pass
# 调用
func(1) # a1=1,a2=9
func(2,3) # a1=2,a2=3
位置参数:按定义的顺序传入参数(不使用关键字)。
关键字参数(又称关键参数,指定参数):指定关键字(形参名)来传入参数。关键参数不用按顺序传入。
def func1(a1,a2,a3=1,a4=2):
print(a1,a2,a3,a4)
func1(11,22) # 位置传参a1=11,a2=22。默认参数a3=1,a4=2
func1(11,22,33) # 位置传参
func1(11,22,33,44) # 位置传参
func1(11,a2=22,a3=33) # a2=22,a3=33是关键字传参
# func1(11,a2=22,33) # 报错,关键字后面的参数也必须有关键字
参数一般命名为‘*args‘,这个参数可以接受任意个位置参数,并转换为元组(即使只有一个元素也会转换)传入函数。
参数名可以自定义,但是推荐用args
不确定这个函数接受多少参数的时候使用
def func1(*args): # 一般情况下万能参数推荐命名为 *args
print(args) # 调用的时候不要 *
func1(1,2) # 输出元组(1,2)
# 无*和有*
func1((11,22,33,44,55)) # 输出元组套元组((11, 22, 33, 44, 55),)
func1(*(11,22,33,44,55)) # '*'将元素循环放入*参数的元组中(打散放入),输出(11, 22, 33, 44, 55)
func1(1,2,*[11,22,33],*(111,222,333),*{1111,2222}) # 列表,元组,集合都能拆开放进去。注意集合无序
输出结果:
(1, 2)
((11, 22, 33, 44, 55),)
(11, 22, 33, 44, 55)
(1, 2, 11, 22, 33, 111, 222, 333, 2222, 1111)
一般参数和万能参数一起用:
def func2(a1, *args):
print(a1, args)
func2(1,2,3,4,5,a2=6) # 当参数在万能参数后面,只能用关键字传参。 很少用
# a1=1,args=(2,3,4,5),a2=6
参数一般命名为‘**kwargs‘,这个参数可以接受任意个关键字参数,并转换为字典传入函数。
def func1(**kwargs):
print(kwargs)
func1(k1='a',k2=123) # {'k1':'a', 'k2':123}
# 有**和无**
func1(**{'k1':'a', 'k2':123}) # {'k1':'a', 'k2':123}
func1(k1={'k1':'a', 'k2':123},k2=123) # {'k1':{'k1':'a', 'k2':123}, 'k2':123}
func1(k1=1,**{'k2':2,'k3':3}) # 这个违背了关键字参数在后的原则,不过很少见
执行结果:
{'k1': 'a', 'k2': 123}
{'k1': 'a', 'k2': 123}
{'k1': {'k1': 'a', 'k2': 123}, 'k2': 123}
{'k1': 1, 'k2': 2, 'k3': 3}
一般*args和**kwargs 一般会一起出现
def func1(*args,**kwargs):
print(args,kwargs)
func1(*[1,2,3],k1=2,k2=3,k3=4)
func1(*[1,2,3],**{'k1':2,'k2':3})
func1(111,222,*[1,2,3],k1='aaa',**{'k2':'bbb','k3':'ccc'})
执行结果:
(1, 2, 3) {'k1': 2, 'k2': 3, 'k3': 4}
(1, 2, 3) {'k1': 2, 'k2': 3}
(111, 222, 1, 2, 3) {'k1': 'aaa', 'k2': 'bbb', 'k3': 'ccc'}
def func1(a1,a2):
pass
def func2(a1,a2=None):
pass
def func3(*args,**kwargs):
pass
以上就是python中关于参数的一些介绍。
下一篇我们介绍一下函数的返回值。
标签:介绍 data default 结果 默认值 情况下 方式 war pytho
原文地址:https://www.cnblogs.com/py-xiaoqiang/p/11064232.html