Python学习手册 - 09

来源:互联网 发布:python 文本转语音 编辑:程序博客网 时间:2024/06/03 11:18

函数是在编程中 剪剪贴贴的代替。

有函数以后,才有全局作用域的麻烦。

def 是可执行的代码, 在运行这个之前,函数并不存在。

函数也是对象-函数对象,def创建一个函数对象,并复制给你定义的函数名字。

def这个语句是实时执行的, 创建函数对象,赋值给函数名

在模块导入的时候,会执行一遍模块中的代码。

依赖类型的行为称为多态。

函数是多态的。

作用域就是 命名空间

变量被赋值的地点,绑定一个特定的命名空间。

全局作用域仅限单个文件。

函数内部可以引用全局变量,前提是函数内部没有相同名称的变量。

内置变量会被最后搜索的, 所以你可以使用内置变量,而不需要导入 __builtin__ 模块

全局变量不经过声明也可以在函数内部引用
但如果要在函数内部改变全局变量的话,必须要global声明。

名字查找规则:本地作用域,上一层的本地作用域,全局作用域,内置作用域。

函数也可以声明 全局作用域

包闭,在函数内,定义函数 。 或者叫 工厂函数 ,能够在动态的改变函数。

定义__call__ 方法后,变量可以像函数一样被使用。

函数的参数
1,普通的位置确定的参数
2,关键字的参数
3,参数默认值
4,* 和** 任意参数

这有个丑陋的例子

def f(*arg):    print arg f(1,2,3,4)def f2(**arg):    print arg f2(a=2,b=3,c=4)

还有另一种叫 解包参数,这像是一种偷懒的参数传递方法。

函数对象: 属性和注解
函数是一个对象,就像字符串或者数字那样

函数可以附加任意的用户定义的属性。

lambda 是一种函数速写

map 序列中的映射函数

filter 生成一个 符合条件的新的列表

reduce 将一个列表中的每个元素,都按照某种方式,应用于一个函数,最后得到一个结果。

列表解析: 要实现一个功能,有很多的方法。列表解析就是一个。

生成器函数: 包含yield的def函数,支持迭代协议。

状态挂起,

列表解析比map更强大。map只支持函数。

0 0