Python -- 函数传递参数的四种形式
2017-08-08 16:28
519 查看
Python中函数传递参数有以下四种形式:
四种中最常见是前两种,基本上一般点的教程都会涉及,后两种一般很少单独出现,常用在混合模式中
第一种
第二种
b60a
接根据关键字来进行赋值,同时该种传参方式还有个好处就是可以在调用函数的时候作为个别选填项,不要求数量上的相等,即可以
第三种
第四种
最后要强调的是四种传递方式混合使用(大多数情况是这种),
args = 须在args之后
*args须在args=value之后
**kwargs须在*args之后
赋值过程为:
按顺序把传给args的实参赋值给对应的行参
args = value 形式的实参赋值给行参
将多余出的即键值对行后的零散实参打包组成一个tuple传递给*args
将多余的key=value形式的实参打包正一个dicrionary传递给**kargs
位置参数:fun1(a,b,c)
关键字参数:fun2(a=1,b=2,c=3)
多个参数以元组的形式传递:fun3(*args)
多个参数以字典的形式传递:fun4(**kargs)
四种中最常见是前两种,基本上一般点的教程都会涉及,后两种一般很少单独出现,常用在混合模式中
第一种
fun1(a,b,c)是直接将实参赋予行参,根据位置做匹配,即严格要求实参的数量与行参的数量位置相等,比较一般,大多数语言常用这种方式。可以给参数设置缺省值,如果传递了新值则以新值为准,若没有传递新值则以缺省值为默认值.
第二种
fun2(a=1,b=2,c=3)根据键值对的形式做实参与行参的匹配,通过这种式就可以忽略了参数的位置关系,直
b60a
接根据关键字来进行赋值,同时该种传参方式还有个好处就是可以在调用函数的时候作为个别选填项,不要求数量上的相等,即可以
fun5(3,4)来调用fun2函数,这里关键就是前面的3,4覆盖了原来a、b两个行参的值,但c还是不变采用原来的默认值3,这种模式相较第一种更加灵活,不仅可以通过
fun6(c=5,a=2,b=7)来打乱行参的位置,而且可以在但没有对应行参传递的时候常用定义函数时的默认值。
第三种
fun3(*args),这传参方式是可以传入任意个参数,这些若干参数都被放到了tuple元组中赋值给行参args,之后要在函数中使用这些行参,直接操作args这个tuple元组就可以了,这样的好处是在参数的数量上没有了限制,但是因为是tuple,其本身还是有次序的,这就仍然存在一定的束缚,在对参数操作上也会有一些不便
第四种
fun4(**kargs)最为灵活,其是以键值对字典的形式向函数传参,含有第二种位置的灵活的同时具有第三种方式的数量上的无限制。此外第三四种函数声明的方式前的'*',与c里面的指针声明一样,这里仅做声明标识之用
最后要强调的是四种传递方式混合使用(大多数情况是这种),
fun7(a,b,*c,**d),但四种方式混用时要遵守:
args = 须在args之后
*args须在args=value之后
**kwargs须在*args之后
赋值过程为:
按顺序把传给args的实参赋值给对应的行参
args = value 形式的实参赋值给行参
将多余出的即键值对行后的零散实参打包组成一个tuple传递给*args
将多余的key=value形式的实参打包正一个dicrionary传递给**kargs
相关文章推荐
- python:函数中五花八门的参数形式(茴香豆的『回』字有四种写法)
- python函数的四种参数传递方式
- Python - 不固定参数函数的定义,四种参数传递方法总结
- python中用元组传递函数参数的形式
- python函数的四种参数传递方式
- python 中函数参数传递形式
- Python中函数的参数传递与可变长参数
- Python中函数参数传递问题
- Python的函数参数传递:传值?引用?
- Python学习笔记7-把函数当参数传递、指定可变参数
- python 函数的四种参数---必选参数、默认参数、可变参数和关键字参数
- Python函数参数传递:传值还是传引用
- Python函数参数传递方式(call by object reference)以及一致性
- Python的函数参数传递:传值?引用?
- Python的函数参数传递:传值?引用?
- python 函数参数的传递
- python函数传递带*的参数说明
- Python函数可变参数定义及其参数传递方式实例详解
- python中函数参数的传递
- Python函数参数传递的问题