首页 飞桨领航团 帖子详情
【AI达人养成营】笔记分享
收藏
快速回复
飞桨领航团 文章AI达人创造营学习资料 451 4
【AI达人养成营】笔记分享
收藏
快速回复
飞桨领航团 文章AI达人创造营学习资料 451 4

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)

 

*装饰器最大的优势是用于解决重复性的操作,其主要使用的场景有如下几个:

计算函数运行时间

给函数打日志

类型检查

九、偏函数

  通过设定函数的默认值,降低调用函数的难度。函数中嵌入 参数=‘ ’

0
收藏
回复
全部评论(4)
时间顺序
FutureSI
#2 回复于2021-11

认真学习~

0
回复
小姐姐都是我的
#3 回复于2021-11

666

0
回复
程序员小勇
#4 回复于2021-12

笔记请发到这里噢

https://aistudio.baidu.com/paddle/forum/topic/show/991307

1
回复
夏雪密会
#5 回复于2021-12

666

0
回复
在@后输入用户全名并按空格结束,可艾特全站任一用户