|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 joey234you 于 2018-1-2 22:37 编辑
第19讲 我的地盘听我的
函数和过程
函数(function)和过程(procedure)的概念
结论1:Python严格来说只有函数,没有过程!
结论2:Python的所有函数都有返回值
再谈返回值
Python返回值总结起来有三个特点:
1、 可以动态确定函数的类型
2、 函数还能返回不同类型的值
3、 还可以同时返回多个值。——利用列表/元组打包多种类型的值一次性返回。
结论:只需要知道Python会返回一个东西,然后拿来用就可以了。
函数变量的作用域——本节重点,重点在于细节
函数变量的作用域,即变量在函数内的可见性
局部变量(Local Variable) VS 全局变量(Global Variable)
结论:在函数内部仅仅去访问全局变量就好,不要试图去修改它。具体原理下节揭晓。
疑问/下节提要:1、有什么办法在函数里面实现全局变量值的修改?
2、Python能实现函数的嵌套吗?
第20讲 内嵌函数和闭包
global关键字
上一节的结论:在函数内部仅仅去访问全局变量就好,不要试图去修改它。其中包含的原理:Python会使用屏蔽(Shadowing)的方式“保护”全局变量
在函数中全局变量的修改要慎用。它会带来哪些后果?
真要去修改,那就要使用关键字global
#插入一句感受:接下来的内嵌函数和闭包,其实对应的就是“局部变量和在函数内修改全局变量”的函数式的变体
内嵌函数(内部函数)
概念:允许在函数内部创建另一个函数
注意:内嵌函数的作用域都在外部函数之中。
闭包(closure)
定义:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包。
在闭包中,外部函数的局部变量对应内部函数的局部变量,事实上相当于之前讲的全局变量跟局部变量的对应关系,在内部函数中,你只能对外部函数的局部变量进行访问,但不 能进行修改。
如果在内部函数中访问外部函数的局部变量时,一定要进行修改(明知不可为而为之 >_< ),有两种方法:
(1) (Python3以前)间接通过容器类型(字符串、列表、元组)来存放外部函数的局部变量
(2) (Python3之后)使用关键字nonlocal,效果类似于global
|
-
函数:我的地盘听我的+内嵌函数&闭包
评分
-
查看全部评分
|