函数类别
函数的基本语法
1-1
函数名, 这是一个用来描述这个函数作用的名称, 写文档的时候, 需要对函数所实现的功能做一个简单的描述。
位于这个位置的那个表达式, 它代表了函数的返回结果。
在后面没有接上表达式的情况之下, 返回的值是什么呢, 那就是None。
函数的调用:函数名(参数)。
函数的参数
必备参数
传入的参数个数、顺序必须和函数定义时一样,例如:
2-1
那就是关键参数。
当函数进行调用的时候, 人们是可以对那个传入进去的参数的先后次序作出改变的行为出现的, 举个具体的例子来说就是:
2-2
默认参数
当我们在定义函数的时候, 去给那个参数指定一个初始的数值, 那么在调用函数的时候这个参数是可以不写的, 这种情况也叫做可省略的参数, 打个比方来说:
2-3
不定长参数
参数名接收的是一个元组, 而参数名接收的则是一个字典, 这一点你可以通过下面的这个具体例子来进行理解。
2-4
全局变量和局部变量
例一:
3-1
例二:
3-2
关键字
这句话是用来做声明的, 意思是让x变成全局变量, 当我们在函数里面给x赋值的时候, 它的改变会映射到我们在主块中使用的x的值, 例如:
3-3
内嵌函数和闭包
如图所示, 在图4-1这个具体的情境里, func2 这种函数被包裹在 func1 里面, 它是属于 func1 的一个内嵌式的存在形式。
这意味着 func2 这个函数所能起作用的空间范围, 或者说它的有效活动区域, 完全是受限于 func1 函数内部的所有代码块范围的。一旦有人试图把 func2 从外面直接进行调用的操作的话, 系统是会给出错误提示的, 程序运行到这里就会报错并中断。
4-1
如图4-2中所展示的那样, 那个func2是func1里面的内嵌函数, 这里的做法是在fun1这个函数里面, 直接去返回fun2这个函数, 通过这种方式的话, 可以直接在外部传参数给这个内部的函数, 然后就可以获取到这个内部函数返回来的结果。
4-2
如下图所示的图4-3之中, fun2是作为嵌套函数出现在fun1内部的, 那么当我们在fun2这个位置上面, 去试图修改x这个值的时候, 随后再调用fun1, 就会出现报错的情况发生, 这里的本质原因, 其实也是属于作用域这一方面的问题。
4-3
表达式
那个表达是参数和返回值。
原函数
5-1
原函数
5-2
()这个函数, 它相当于一个过滤器功能。第一个参数可以是某一个函数, 或者也可以是None这种状态。第二个参数呢, 则为一个序列。举个例子来说就是:
5-3
其实map()这个函数, 它的作用就是一次子把所有的那些调用都得给完成明白了, 那这个里面的第一个参数就是那个函数, 至于那些后面的参数, 它们其实就是序列, 然后这里有一个具体的例子就是这样。
5-4
递归
所谓递归函数, 指的就是那种会在其内部的执行过程之中去调用它自己本身的那个函数。
6-1
递归来写阶乘和正整数求和
阶乘
6-2
求和
6-3
回调函数
在通常情况下, 编写程序的时候, 是由你主动去调用系统层面提供的API接口。假如我们把这种关系给反一反, 变成了你写一个函数出来, 然后让系统来调用你这个函数。这种情况, 我们称之为回调操作。具体而言, 那个被系统调用的函数, 我们就把它叫做回调函数。举例来说:
7-1
参照一下那个叫做范围的那个函数存在的意思呢, 然后动手编出来一个全新的函数出来给这个叫浮点数的那一种数字类型去使用的。
7-2
需要大家去做的事情, 是给<>()函数创造一种逻辑, 这种逻辑要和range()函数的参数使用方式保持完全一致。
总而言之, 对于那些希望能够认真学习的小伙伴们来说, 你们可以通过关注加上私信的方式去回复“学习”这两个字,这样一来, 大家就都能够拿到一份由本人精心准备的学习资料。
学习资料
学习资料