Python函数基础
一、自定义函数:
1. 函数代码块以def开头,后接函数标识符名称和圆括号(),任何传入参数和自变量必须放在圆括号中间。
2. Return:结束函数,选择性地返回一个值给调用方,不带表达式的return相当于返回None,返回多个值用‘,’隔开。
参数传递:
1. 位置函数:以正确的顺序传入函数,数量必须与声明的时候一样。
2. 缺省函数:设置默认值,如果没有值输入就输出默认值。
3. 可变参数:传入的参数是可变的,可以是任意个 甚至0个。参数前要加‘*’,这些传入的参数将自动组成一个元组。
4. 关键字参数:可以传入0个或任意个参数,将自动组成一个字典。用**kw占位。(可以用条件语句判定)
5. 命名关键字参数:如果要限制关键字参数的名字,就用这个。用‘*’作为分隔标识,有‘,’来分隔。‘*’,之后的参数都是关键字参数的命名(可以用来标识一些易变的量)
二、参数的组合:
在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
三、变量的作用域和global变量
*局部变量作用在函数内,全局变量作用在函数外。函数优先使用局部变量,如果没有局部变量可以使用全局变量。但是,函数外无法引用局部变量(可以看做是单向玻璃,外部看不见内部,但内部能看见外面。)
四、lambda匿名函数
lambda 的主体是一个表达式,而不是一个代码块。仅仅能在 lambda 表达式中封装有限的逻辑进去。lambda 函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
*Lambda 传入参数:传出参数
五、高阶函数
*类似于高数中的高阶导数,将一个函数作为参数传入另一个函数。(一般左边是传入参数,右边是传入函数(传入参数,传入函数))
六、reduce和map函数
1. map()接收两个参数,分别是 函数和 可迭代对象,并将传入的函数一个个作用到可迭代对象上,将其以新的可迭代对象的形式传出。
2. reduce: 用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,依此类推,最后得到一个结果。
七、Sorted
排序
1. sorted()默认为升序 sorted( ,reverse=True)降序排列
2. 按绝对值排序key指定的函数将作用于list的每一个元素上,并根据key函数返回的结果进行排序。
3. 可自定义key的函数值,来进行排序。例如:坐标位置按x来排序等。
八、装饰器(https://www.runoob.com/w3cnote/python-func-decorators.html)
1. 函数作为返回值。
函数作为返回值时不加括号,加括号代表立马执行,不加括号代表可以被传递甚至赋值。
2. 闭包:
定义:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure).
*返回的函数并没有立即执行,直到被调用了之后才会被执行。
**返回函数不要引用循环变量,或者后续会发生变化的变量。
3. 装饰器:
是一种函数的函数,利用各种方法对函数进行功能上的增强。
一般用@来引出装饰器 @装饰器的名字
@a_new_decorator is just a short way of saying:
a_function_requiring_decoration = a_new_decorator(a_function_requiring_decoration)
加入装饰器易导致函数的名字和注释文档被改写,此时需要引入functools.wraps (from functools import wraps)
*装饰器最大的优势是用于解决重复性的操作,其主要使用的场景有如下几个:
计算函数运行时间
给函数打日志
类型检查
九、偏函数
通过设定函数的默认值,降低调用函数的难度。函数中嵌入 参数=‘ ’
认真学习~
666
笔记请发到这里噢
https://aistudio.baidu.com/paddle/forum/topic/show/991307
666