廖雪峰的python笔记(九)--模块

1.模块的简单介绍

  • 在Python中,一个.py文件就称之为一个模块(Module)
  • 使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中
  • 尽量不要与内置函数名字冲突。
  • 为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。

每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。

__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,而它的模块名就是包目录的名称

  • EX:一个abc.py的文件就是一个名字叫abc的模块
  • 可以有多级目录,组成多级层次的包结构
mycompany
 ├─ web
 │  ├─ __init__.py
 │  ├─ utils.py
 │  └─ www.py
 ├─ __init__.py
 ├─ abc.py
 └─ xyz.py
  • mycompany.web也是一个模块,请指出该模块对应的.py文件:mycompany.web.__init__.py
  • 创建自己的模块时,要注意:

        --模块名要遵循Python变量命名规范,不要使用中文、特殊字符;

        --模块名不要和系统模块名冲突,最好先查看系统是否已存在该模块,检查方法是在Python交互环境执行import abc,若成功则说明系统存在此模块。

2.使用模块

  • 第一步导入模块:import
  • 外部不需要引用的函数全部定义成private,只有外部需要引用的函数才定义为public。
  • 在一个模块中,有的函数和变量我们希望仅仅在模块内部使用:在Python中,是通过_前缀来实现的。类似_xxx__xxx,不应该直接被引用
  • private函数和变量“不应该”被直接引用,而不是“不能”被直接引用,是因为Python并没有一种方法可以完全限制访问private函数或变量,但是,从编程习惯上不应该引用private函数或变量。

3.模块搜索路径

当我们试图加载一个模块时,Python会在指定的路径下搜索对应的.py文件,如果找不到,就会报错:

>>> import mymodule
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named mymodule

默认情况下,Python解释器会搜索当前目录、所有已安装的内置模块和第三方模块,搜索路径存放在sys模块的path变量中:

>>> import sys
>>> sys.path
['', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python36.zip', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6', ..., '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages']
  • 添加自己的搜索目录,有两种方法:
  • 1.直接修改sys.path,添加要搜索的目录:
>>> import sys
>>> sys.path.append('/Users/michael/my_py_scripts')
  • 2.设置环境变量PYTHONPATH,该环境变量的内容会被自动添加到模块搜索路径中。设置方式与设置Path环境变量类似。

猜你喜欢

转载自blog.csdn.net/weixin_38715903/article/details/88191356