栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python3 学习中的关键点

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python3 学习中的关键点

1.如果在函数内部试图修改全局变量的值,那么Python会创建 一个新的局部变量替代(名字与全局变量相同),但真正的全局变量 是“不为所动”的。如果仍然觉得有必要在函数内部去修改这个全局变量,那么可以使用global关键字来达到目的。

2.Python的函数定义是支持嵌套的,也就是允许在函数内部定义另一 个函数,这种函数称为内嵌函数或者内部函数。 在嵌套函数中,内部函数可以引用外部函数的局部变量。

 3.像这种名字一样、作用域不同的变量引用,Python引入了LEGB原则进行规范。

LEGB含义解释:

• L-Local:函数内的名字空间。

• E-Enclosing function locals:嵌套函数中外部函数的名字空间。

• G-Global:函数定义所在模块的名字空间。

• B-Builtin:Python内置模块的名字空间。 那么变量的查找顺序依次就是L→E→G→B。

 4.“在计算机科学中,闭包(closure)是词法闭包 (lexical closure)的简称,是引用了自由变量的函数。这个被引用的自 由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例 外。所以,有另一种说法认为闭包是由函数和与其相关的引用环境组合 而成的实体。闭包在运行时可以有多个实例,不同的引用环境和相同的 函数组合可以产生不同的实例。”

 

5.到了Python 3的世界里,有了不少的改进。如果希望在内部函数里 可以修改外部函数里的局部变量的值,可以使用nonlocal关键字告诉 Python这不是一个局部变量,使用方式与global一样:

 6.闭包概念的引入是为了尽可能地避免使用全局变量,闭包允许将函数与 其所操作的某些数据(环境)关联起来,这样外部函数就为内部函数构 成了一个封闭的环境。这一点与面向对象编程的概念是非常类似的,在面向对象编程中,对象允许将某些数据(对象的属性)与一个或者多个 方法相关联。

7.在Python中装饰器(decorator)的功 能是将被装饰的函数当作参数传递给与装饰器对应的函数(名称相同的函数),并返回包装后的被装饰的函数。Python因此发明了“@语法糖”来解决这个问题。所谓语法糖 (Syntactic sugar),就是在计算机语言中添加的某种语法,这种语法对 语言的功能没有影响,但是更方便程序员使用。语法糖让程序更加简 洁,有更高的可读性。如果装饰一层觉得不够,还可以一层套一层 地加装饰器。

调用eat()的时候,相当于调用buffer(performance(log(eat)))。 

8.函数式编程是一种古老的编程模式,就是用函数(计算)来表示程 序,用函数的组合来表达程序组合的思维方式。执行完lambda语句后实际上返回一个函数对象,如果要对它进行调用,只需要给它绑定一个临时的名字即可。

如下的例子将函数闭包采用lambda表达式进行实现。

 12.filter()函数是一个过滤器,它的作用就是在海量的数据里面提取出有用的信息。

list(filter(lambda x : x % 2, range(10)))
#[1, 3, 5, 7, 9]

13.map()这个内置函数也有两个参数,第一个参数是函数,第二个参数是收集参数,支持多个可迭代对象。注意:如果可迭代对象的长度不一致,则以较短的迭代结束为止。

 14.

>>> import sys
>>> sys.setrecursionlimit(10000) # 将递归深度限制设置为一万层

可以通过Ctrl+C快捷键让Python强制停止。

15.递归的两个条件

• 调用函数本身。

• 设置了正确的返回条件。

 16.递 归的实现可是函数自己调用自己,每次函数的调用都需要进行压栈、弹 栈、保存和恢复寄存器的栈操作。递归花费的时间一般长于迭代。递归递归,归去来兮!经典递归程序:

 17.经典汉诺塔问题

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1012795.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号