Python模块知识1:模块知识介绍

        模块是代码的归类,能定义函数、类和变量,把相关的代码分配到一个模块里,能让你的代码更好用,更易懂、也更简洁模块在java中叫做类库。

    模块的存在方式:

    模块可以是单个.py文件,也可以是一个文件(里面存放n多个.py文件)。    


1、模块分类:

  • 内置模块:os和sys是两个非常常见的和操作系统交互的模块;file是文件操作相关的模块;比较常用的一些模块如:logging、time/datetime、json/pickle

  • 自定义模块:自己写的py文件或者文件夹(可含多个py文件)

  • 第三方模块:如requests、math等


2、模块的使用:原则是先导入后使用

最好是模块和执行文件放在同一目录,导入方法可以使用import也可以使用from。

主要语法形式如下:

Python模块知识1:模块知识介绍

  • import导入单个模块:比如导入单个.py文件,s1.py,可直接使用import+文件名

        import s1

        s1.login()#使用s1中的login函数

  • import导入文件夹下的文件:如s1.py在lib文件夹下,可使用import 文件夹名.文件名 

        import lib.s1

        lib.s1.login()#使用方法

  • from导入单个模块:比如导入单个.py文件,s1.py,

        from s1 import login

        login()

  • from 一次性导入所有的函数:但是不太推荐这种方式。

        from s1 import *

        login()

        logout()


  • 如果是文件夹的形式,导入后可以设置别名,后续可以使用别名直接调用。

        from lib import s1 as lib_s1

        from scr import s1 as scr_s1


3、模块的优先级规则:

   python会先去项目所在的目录去找,如果不存在,再去python默认的其他目录去找,优先级是从上往下找。具体优先级可查看sys.path

    如果文件不在系统查找目录,可以通过append来添加。

案例1:模块查找目录优先级。

import sys
for item in sys.path:
print(item)

查找优先级:

Python模块知识1:模块知识介绍

案例2:假设s2不在系统的目录,则可以先添加,再导入s2文件:

import sys
sys.path.append('D:\\')#导入D盘文件夹
import s2#文件名

4、第三方模块的导入

  • 通过pip3安装与下载:

    1)pip3 install 模块。python3自带pip3,需要添加pip3的目录到环境变量中,然后即可直接导入模块。

    2)pip3 uninstall +卸载模块   


导入模块requests

案例:

步骤1:进入目录

开始—cmd,打开命令编辑框,输入如下命令(cd+空格+pip3所在的目录),进入pip3的目录: 

输入的命令:cd C:\Users\...\AppData\Local\Programs\Python\Python36\Scripts

Python模块知识1:模块知识介绍

步骤2:安装wheel

输入:pip3 install requests

Python模块知识1:模块知识介绍


  • 通过下载源码,进行安装,下载源码,然后执行


5、模块中的特殊变量:

1)查看所有的内置变量

Python模块知识1:模块知识介绍

执行结果:

Python模块知识1:模块知识介绍


2)注释信息__doc__ 

 import s2

 print(__doc__ )#获取注释信息,获取py程序文档"""里面的内容


3)获取当前程序所在路径__file__

# print(__file__)#获取当前程序所在的路径

import os

print(os.path.abspath(__file__))#C:\Users\...\PycharmProjects\study2017\s2.py

print(os.path.dirname(os.path.abspath(__file__)))#C:\Users\...\PycharmProjects\study2017

print(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))#C:\Users\...\PycharmProjects


4) print(__package__)#获取程序所在的包,文件import哪个包就在哪个里面,如果自己的包,则显示None。


5)主文件执行__name__=="__main__"

#只有执行当前文件时才执行。当前文件的特殊变量__name__=="__main__",如果是导入的时候,就不执行,因此在主文件中可以这么写,这样可以限制,只在主程序执行,作为模块导入时不执行


def run():#定义run函数

    print("run")

run()


if __name__=="__main__":#只在主程序内运行

    run()