python 参数的组合

现在我们知道python定义函数的参数类型有:
必选参数

默认参数

可变参数

关键字参数

但是在我们日常中我们是可以组合使用这些参数的:但是使用的时候,参数定义是有顺序的

定义的顺序必须是:必选参数,默认参数,可变参数,关键字参数

1,17,68);font-style:normal;font-varian比如定义一个函数,包含上述4种参数:
def func(a, b, c=0, *args, **kw):
print ‘a =‘, a, ‘b =‘, b, ‘c =‘, c, ‘args =‘, args, ‘kw =‘, kw
在函数调用的时候,Python解释器自动按照参数位置和参数名把对应的参数传进去。
>>> func(1, 2)
a = 1 b = 2 c = 0 args = () kw = {}
>>> func(1, 2, c=3)
a = 1 b = 2 c = 3 args = () kw = {}
>>> func(1, 2, 3, ‘a‘, ‘b‘)
a = 1 b = 2 c = 3 args = (‘a‘, ‘b‘) kw = {}
>>> func(1, 2, 3, ‘a‘, ‘b‘, x=99)
a = 1 b = 2 c = 3 args = (‘a‘, ‘b‘) kw = {‘x‘: 99}
最神奇的是通过一个tuple和dict,你也可以调用该函数:
>>> args = (1, 2, 3, 4)
>>> kw = {‘x‘: 99}
>>> func(*args, **kw)
a = 1 b = 2 c = 3 args = (4,) kw = {‘x‘: 99}
所以,对于任意函数,都可以通过类似 func(*args, **kw) 的形式调用它,无论它的参数是如何定
义的。
小结
Python的函数具有非常灵活的参数形态,既可以实现简单的调用,又可以传入非常复杂的参数。
默认参数一定要用不可变对象,如果是可变对象,运行会有逻辑错误!
要注意定义可变参数和关键字参数的语法:
*args 是可变参数,args接收的是一个tuple;
**kw 是关键字参数,kw接收的是一个dict。
以及调用函数时如何传入可变参数和关键字参数的语法:
可变参数既可以直接传入: func(1, 2, 3) ,又可以先组装list或tuple,再通过 *args 传
入: func(*(1, 2, 3)) ;
关键字参数既可以直接传入: func(a=1, b=2) ,又可以先组装dict,再通过 **kw 传
入: func(**{‘a‘: 1, ‘b‘: 2}) 。
使用 *args 和 **kw 是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法

时间: 2024-11-01 22:36:25

python 参数的组合的相关文章

Python参数类型以及常见的坑

导语 ??由于之前遇到过几次有关于参数类型的坑,以及经常容易把一些参数类型搞混淆,现在做一下有关参数类型的总结记录以及对之前踩坑经历的分析. 参数类型 首先我们列举一下有关于Python的参数类型,以及实际上的运用和原理. 位置参数(必选参数) 默认参数 可变参数 关键字参数 位置参数(必选参数) 首先是位置参数,同时也被称作必选参数,位置参数很好理解,只要记住这点: 在函数定义时直接给定的此参数名称,调用时按照参数的位置顺序,依次赋予参数值. 示例: def person_info(name,

<转>Python 参数知识(变量前加星号的意义)

csdn上的牛人就是多,加油 —————————————————————————— 过量的参数 在运行时知道一个函数有什么参数,通常是不可能的.另一个情况是一个函数能操作很多对象.更有甚者,调用自身的函数变成一种api提供给可用的应用. 对于这些情况,python提供了两种特别的方法来定义函数的参数,允许函数接受过量的参数,不用显式声明参数.这些“额外”的参数下一步再解释. 注意args和kwargs只是python的约定.任何函数参数,你可以自己喜欢的方式命名,但是最好和python标准的惯用

Python参数基础

Python参数基础 位置参数 ? 通过位置进行匹配,把参数值传递给函数头部的参数名称,顺序从左到右 关键字参数 ? 调用的时候使用参数的变量名,采用name=value的形式 默认参数 ? 为没有传入值的参数之指定一个默认值,name=value的形式 可变参数 ? 以字符*开头收集任意多的参数 Keyword-only参数 ? 参数必须用带有关键字参数的名字 原文地址:https://www.cnblogs.com/SunQi-Tony/p/9240610.html

Python参数类型以及实现isOdd函数,isNum函数,multi函数,isPrime函数

Python参数类型以及实现isOdd函数,isNum函数,multi函数,isPrime函数 一.Python参数类型 形参:定义函数时的参数变量. 实参:调用函数时使用的参数变量. 参数传递的过程,就是把实参的引用传递给形参,使用实参的值来执行函数体的过程. 在 Python 中,函数的实参/返回值都是是靠引用来传递的. 在调用函数时,通常会传递参数,不同的参数处理不同的数据.一般有普通参数.默认参数.可变位置参数.可变关键字参数等. 1.普通参数:按照参数位置,依次传递参数. def ad

Python参数组合

参数定义的顺序必须是:①必选参数.②默认参数.③可选参数.④命名关键字参数.⑤关键字参数 1 #a,b为必选参数:c为默认参数:args为可变参数:kw为关键字参数 2 def f1(a,b,c=0,*args,**kw): 3 print('a=','b=',b,'c=','args=',args,'kw=',kw) 4 5 #参数定义的顺序必须是:必选参数.默认参数.可选参数.命名关键字参数.关键字参数 6 def f2(a,b,c=0,*,d,**kw): 7 print('a=','b=

python类的组合

类的组合,即在类实例化时,将另一个类的实例作为参数传入,这样可以将两个实例关联起来. 当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好. 例如,描述一个机器人类,这个大类是由很多互不相关的小类组成,如机械胳膊类.腿类.电池类等. 当类之间有很多相同的属性,提取这些统统的属性做成基类,用继承比较好. class course: def __init__(self,name,price,period,teacher): self.name=name self.price=pri

python 继承与组合

一.组合 #老师 课程 生日 class Course: def __init__(self,name,period,price): self.name = name self.period = period self.price = price class Birth: def __init__(self,year,month,day): self.year = year self.month = month self.day = day class Teacher: def __init__

python 实现排列组合

1.python语言简单.方便,其内部可以快速实现排列组合算法,下面做简单介绍. 2.一个列表数据任意组合 2.1主要是利用自带的库 #_*_ coding:utf-8 _*_ #__author__='dragon' import itertools list1 = [1,2,3,4,5] list2 = [] for i in range(1,len(list1)+1): iter = itertools.combinations(list1,i) list2.append(list(ite

Python 参数设置

方式一:配置文件(ConfigParser模块) 方式二:解析参数(argparse模块) 1. 配置文件(ConfigParser模块) 1.1 ConfigParser简介 ConfigParser 是用来读取配置文件的包.配置文件的格式如下:中括号“[ ]”内包含的为section.section 下面为类似于key-value的options内容.例如 [db] db_host = 127.0.0.1 db_port = 22 db_user = root db_pass = rootr