python学习第六天——模块的概念(重要)
.pyc文件
讲模块之前,先了解下.py文件和.pyc文件
.pyc文件是字节码文件,什么时候生成呢?这是一个稍微复杂的问题,有兴趣的了解下:python什么时候生成.pyc文件
我们只了解下一般情况:
在 import 某个py 文件时,这个 py 文件会被存一份 pyc 加速下次装载,
至于要不要重新生成,要看.pyc文件的生成时间和.py文件最后一次修改的时间是否"相符",如果.py文件被修改过,下次被import时肯定会重新生成一个
.py文件
暂时简单的认为,一个模块对应的就是一个.py文件,包含一个或多个类,一般的,类里面包含函数,变量,类我们在后面再学习
import
给出一个原则:python显式优于隐式
import用来导入模块,常用的语法有2种:
1、import module1 [as name1], module2 [as name2],…
这种用法会导入指定模块中的所有成员(包括变量、函数、类等);使用模块中的成员时,需用该模块名(或别名)作为前缀,否则 Python 解释器会报错
2、from modulename import 成员名1 [as name1],成员名2 [as name2],…
只会导入模块中指定的成员;当程序中使用该成员时,无需附加任何前缀,直接使用成员名(或别名)即可
注意不要使用 from 模块名 import*,因为会出现命名冲突,比如引入两个模块module1和module2,都有一个函数叫f()
__name__属性
每个模块都有一个__name__属性,这个属性可以用来判断模块是独立运行还是被导入
if __name__ == '__main__': print('being run by itself') else: print('being imported from another module')
注意单独运行时,他的值是'__main__'
dir()函数
以列表的形式返回某个对象定义的一系列标识符。如果这个对象是个模块,返回的列表中会包含模块内部所有的函数、类和变量
函数接收一个可选的参数。当参数是模块名时,函数会返回对应模块的标识符列表。没有参数时则会返回当前模块的标识符列表
在包下创建模块
程序包是一个装满模块的文件夹,并且内部有一个特殊的 __init__.py
文件,告诉 Python 这是一个包,否则就只是一个文件夹
pycharm中创建包的时候会自动创建__init__.py文件
python自带的标准库就是一组程序包
以上概念性的东西比较多,属于非常基础但重要的概念,接下来的篇章会跳过面向对象和数据结构这两章,先讲输入输出和异常
因为经验上来说,面向对象和数据结构这两节,我认为是重中之重,会多做一些扩展学习,简明python里面讲的稍微浅一些