默认参数:(缺省参数)缺省参数必须写在后面,可以不指定参数名,但是顺序要保证,否则要指定参数名。
默认值如果不传参,则使用默认值。
在Python中如果元组里面只有一个元素,元素后面不加逗号,输出的结果就是不是元组。
(二)
*arge被称为不定长参数(可变参数):
1、可变参数允许传入0个或任意个参数,这些可变参数在函数调用时自动 组装为一个tuple(元组)
2、在参数*args里接受的元素将组成元组,最好写在最后,因为他将从开始直到最后的所有元素组成元组。
3、可以传递一个元祖或列表,但是他将元组或列表组成元组中的第一个元素;如果在传参过程中在arge前面加个*,就是将元组中的元素传过去,在输出的值就是元组,而不是元组中的元素。
4、遍历元组中的元素,可用两个循环将其遍历。
(三)
**kw 关键字参数:关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict(字典)
1、只接受键值对的形式:参数=值 的形式传参
2、如果值是一个字典,传参时加上**。
3、在Python中定义函数,可用必选参数,默认参数,可变参数,关键字参数和命名关键字参数,这五种参数中除了可变参数和命名关键字参数不能组合使用,其他均可。参数定义的顺序必须是:必选参数,默认参数,可变参数/命名关键字参数和关键字参数。
4、默认参数一定要用不可变对象,如果是可变对象,程序运行时会有逻辑错误。
(四)
1、global :表示在此函数中使用全局变量,如果没有此声明,下面的变量a就是局部变量
2、匿名函数:使用lambda来创建;lambda函数的语法只包含一个语句
语法:lambda [参数]:表达式
sum=lambda arg1,arg2:arg1+arg2;
3、lambda的主体是一个表达式,而不是一个代码块。仅仅在lambda表达式中封装有限的逻辑进去
4、lambda函数拥有自己的名字空间,且不能访问自有参数列表之外或全局名字空间里的参数
5、Python中,有几个定义好的全局函数方便使用:filter(过滤)、map、reduce
在使用reduce需要导入模块:from functools import reduce
for……in……同等于map
for……in……if同等于filter
内部函数:
1、如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部就被认为是闭包。
2、在全局域,函数对象被函数名引用着,它接收参数a,b,计算这两个参数的和作为返回值。
3、所谓第一类对象,意思是可以用标识符给对象命名,并且对象可以被当做数据处理,例如赋值、作为参数传递给函数,或者作为返回值return等。
4、所谓闭包:就是将组成函数的语句和这些语句的执行环境打包在一起时,得到的对象。闭包最重要的使用价值在于:封存函数执行的上下文环境。