在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

  • A+
所属分类:python基础入门

元类

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

103456743

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

五、实践为王

请记住上面的简单案例,如果您想从本文中获得对Python元类仅有的一点印象。纸上得来终觉浅,绝知此事要躬行,开始吧。

模块

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

此时,在包pkg中就可以导入子模块mod_1(仿佛子模块mod_1真的在包pkg中):

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

3、可导出的公有属性

在公有属性方面,包与模块的行为完全一致,当然别忘了包还有 动态的新增属性。

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

2、导入过程

一个模块的导入过程主要分三步:搜索、加载 和 名字绑定。(具体参考 The import statement)

1)搜索

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

3、更多细节根据 The import statement 中的描述,以下是导入原理对应的Python伪码:

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

函数式编程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

差异点 函数(lambda表达式) 函数(def语句)
函数体 只能是单行表达式(expression) 可以是任意复杂的语句(statement)
函数返回值 返回值就是函数体中的表达式的求值结果 由函数体中的return语句指定 返回值
函数名 定义后直接返回函数对象(匿名函数 定义后自动为函数对象绑定函数名
函数定义位置 可以在任何允许函数对象出现的位置定义(支持即时定义,即时调用) 只能在允许语句出现的位置定义(先定义,后调用)
用途 多用于一次性使用的简单函数 适用于一切函数和类方法

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

闭包的这种 能够记住环境状态 的特性非常有用,Python中有一些其他特性就是借助闭包来实现的,比如 装饰器

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

从上面的示例可以看出,如果在编码过程中遇到了“多次用相同的参数调用一个函数”的场景,就可以考虑使用偏函数来固化这些相同的参数,进而简化函数调用。

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

可以看出,这个闭包版本的唯一缺点是它需要对函数title进行重新定义(与默认参数的情况有些类似)。

总而言之,如果需要对 已有函数 进行参数固化,偏函数是最佳选择。

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

2、生成器表达式

生成器表达式(Generator Expressions)与列表解析在语法和功能方面都非常相似。二者的根本差异是:生成器表达式返回一个 生成器,而列表解析返回一个列表。如下所示:

差异点 生成器表达式 列表解析
表示方法 (expr for item in iterable if cond_expr) [expr for item in iterable if cond_expr]
返回值 一个生成器 一个列表

与列表解析相比,生成器表达式具有 延迟计算(lazy evaluation)的特点,因此在使用内存上更有效。关于生成器表达式的实际案例,可以参考 Python核心编程(第二版) 中的 『8.13』 一节:『生成器表达式』。

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

谢谢阅读!!!!

在校学生为室友整理出最全面的Python教程!中国好室友!入门教程

weinxin
我的微信公众号
爱真理,得永生!          爱在灵灵久博客,网罗天下,福利大家!

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: