我的python学习心得笔记基于《Python核心编程》一书及在互联网查阅的资料,针对于python编程语言学习的基本问题和重要知识作一归纳总结。现在开始我正视的python学习之旅。
一、基本风格
关于模块的结构和布局
模块是一种组织形式,它将彼此有关系的python代码组织成独立的文件。模块里可以是一段可执行的脚本,也可以是类定义、函数定义或这几者的组合。
导入模块importmodule_name
访问模块函数或变量module.function()module.variable()
模块的布局(windows平台):
(1)模块文档:介绍模块功能及重要全局变量的含义,模块外可通过module.__doc__(两个下划线)访问这些内容。
(2)模块导入:导入当前模块的代码需要的所有模块;每个模块仅导入一次(当前模块被加载时);函数内部的模块导入代码不会被执行,除非该函数正在执行。
(3)变量定义:定义全局变量。尽量使用局部变量代替全局变量,这样代码不但容易维护,而且还可以提高性能并节省内存。
(4)类定义:所有的类都需要在这里定义。当模块被导入时class语句会被执行,类也就会被定义。类的文档变量是class.__doc__。
(5)函数定义:此处定义的函数可以通过module.function()在外部被访问到,当模块被导入时def语句会被执行,函数也就都会定义好,函数的文档变量是function.__doc__。
(6)主程序:无论这个模块是被别的模块导入还是作为脚本直接执行,都会执行这部分代码。通常这里不会有太多功能性代码,而是根据执行的模式调用不同的函数。
绝大部分的模块创建的目的是为了被别人调用而不是作为独立执行的脚本,只有主程序模块中有大量的顶级可执行代码,所有其它被导入的模块只应该有很少的顶级执行代码,所有的功能代码都应该封装在函数或类当中。
二、内存管理
1、python变量名无需显式声明,而是在第一次被赋值时自动声明。python创建变量时也无需声明类型,而是解释器根据语法和右侧操作数来决定新对象类型。
2、程序员不用关心内存管理。Python解释器承担了内存管理的复杂任务。
3、引用次数。python使用引用计数器来追踪内存中的变量对象。
增加引用次数:当对象被创建并(将其引用)赋值给变量时,该对象的引用计数就被设置为1。当同一个对象(的引用)又被赋值给其它变量时,或作为参数传递给函数,方法或类实例时,或者被赋值为一个窗口对象的成员时,该对象的一个新的引用,或者称作别名,就被创建(则该对象的引用计数自动加1)。
减少引用次数:一个本地引用离开了其作用范围,比如foobar()(参见上一下例子)函数结束时。对象的别名被显式的销毁,如delx。对象的一个别名被赋值给其它的对象,如x=123。对象被从一个窗口对象中移除,如myList.remove(x)。窗口对象本身被销毁,如delmyList。
4垃圾收集
Python的垃圾收集器实际上是一个引用计数器和一个循环垃圾收集器。当一个对象的引用计数变为0,解释器会暂停,释放掉这个对象和仅有这个对象可访问(可到达)的其它对象。作为引用计数的补充,垃圾收集器也会留心被分配的总量很大(及未通过引用计数销毁的那些)的对象。