在python中,模块是代码组织的一种方式,把功能相近的函数放到一个文件中,一个文件(.py)就是一个模块(module)
模块名就是文件名去掉后缀.py。这样做的好处是:
-提高了代码的可复用,可维护性。一个模块编写完毕后,可以很方便的在其他项目中导入
-解决了命名冲突,不同模块中相同的命名不会冲突
导入模块
1. import 模块名
模块名.变量 模块名.函数 模块名.类
2. from 模块名 import 变量、函数、类
在代码中可以直接使用变量、函数、类
3. from 模块名 import *
*代表该模块中所有的内容
如果想限制获取的内容,可以在模块中使用__all__ = ['使用*可以访问到的内容']
4. 无论是import 还是from 的形式,都会将模块内容进行加载
如果希望其不进行调用,就会用到__name__
在自己的模块中__name__ = __main__
如果在其他模块中通过导入的方式调用的话:__name__ = 模块名
当你导入一个模块,Python解析器对模块位置的搜索顺序是:
1.当前目录
2.如果不在当前目录,Python 则搜索在shell变量 PYTHONPATH 下的每个目录
3.如果都找不到,Python会查看默认路径,UNIX下,默认路径一般为/usr/local/lib/python/。
模块搜索路径存储在system模块的sys.path变量中。变量里包含当前目录。PYTHONPATH和由安装过程决定的默认目录
Python自身的运行环境 | sys模块 |
文件的搜索目录顺序 | sys.path |
python的版本 | sys.version |
init.py 文件
当导入包的时候,默认会调用__init__.py
1.当导入包的时候,把一些初始化的函数,变量,类定义在__init__.py文件中
2.此文件中函数,变量等的访问,只需要通过 包名.函数(变量,类)…
3.结合__all__ = [‘通过*可以访问的模块名’]
from 模块 import * 如果没有定义__all__,表示可以使用模块里面的所有内容;如果定义了__all__,则只有__all__定义的内容才可以访问
from 包 import * 如果没有定义__all__,则无法使用模块里面的所有内容;需要在__init__.py文件中定义__all__,
只有__init__.py文件中__all__定义的模块才可以访问
循环导入
需要注意的是:避免产生循环导入
若出现循环导入的情况时,有以下的解决方法
1.重新架构
2.将导入的语句放到函数中
3.把导入语句放到最后
运行python文件想要传参数时的方法:
1.可以在pycharm 点击 Edit configurations,在打开界面的 Parameters后填入要传递的参数,以空格隔开
2.用文件管理器打开当前文件所在文件夹,在文件目录栏输入cmd,在打开的黑窗口中输入python 当前文件名.py 要传递的参数