Python学习之模块目录
一、这东西是啥,为什么要学它???
因为它牛,Python因为有强大的第三方模块,加上简单易学的语法,使得python编程语言在这几年很快的挤入编程语言的前五强。Python的模块可以等价与C/C++里面的库文件、Java里面的包。
模块是一个或者一些以“.py”为后缀名的为实现某一特定的功能而写代码的文件的总称,每一个模块在python里都被看做是一个独立的文件。通过将相关的代码分配到一个模块里能让你在未来想要再次使用相同时提供方便。模块可以调用模块使得资源共享,所以可以通过下载别人以及写好的模块为自己所用,简称白嫖。由于避免不同社区、组织或者团队使用的函数名称和变量名称重复,在不同的模块中可以存在相同名字的函数名和变量名。
注意:不要和系统内置的模块名称重复
二、模块的分类
1.内置模块
内置模块又叫做系统模块,顾名思义就是Python官方提供的模块。我们可以通过了解和学习这些模块,实现很多功能,比如打开文件,产生随机数等。
这是Python官方提供的内置模块文档:链接在此
由于Python官方提供的内置模块比较多,这里我们只选几个常用的进行讲解:链接在此
2.第三方模块
第三方模块就是非官方的,某些组织、社区或者爱好者编写的并发表在Github的开源社区上的模块。需要通过下载安装等途径才能调用
可以通过以下网站查看和下载第三方模块:链接在此
或者
使用豆瓣源进行安装(这个快,而且不容易失败):链接在此
一般可以在终端输入pip install 模块名
进行下载和安装。
pip install 模块名:用于安装第三方模块,当 pip 使用 install 作为参数时,后面的模块名不能省略。
pip uninstall 模块名:用于卸载已经安装的第三方模块,选择 uninstall 作为参数时,后面的模块名也不能省略。
pip list 模块名:用于显示已经安装的第三方模块。
pip install --upgrade 模块名:用于更新模块,
3.自定义的模块
自定义的模块就是自己定义的模块,当自己的项目比较庞大的时候,一般不会将所有代码都写在一个py文件,而是通过将有着相同的功能的代码块写在一个公共的文件中并以模块的形式导过去直接调用。
三、模块的导入
模块不想内置函数一样可以随便使用,需要导入程序里面,就是说要解方程式时的有未知数的概念一样。
通过使用关键字import
、as
、from
下面是模块导入的四种方法:
import 模块名 #使用import关键字导入模块
import 模块名 as 重命名 # 通过as给复杂的模块,使用别名
import 母模块.子模块 #由于很多模块里面有子模块,所以需要.来区分
from 母模块 import 函数名/子模块 #通过from导入子模块
四、模块内方法的使用
导入完模块后,我们就可以使用模块里面的方法或者函数了。和平时使用的函数一样,知道函数名字和参数就可以直接调用。
格式
格式根据模块的导入进行调用的。可以分为四种(这是个人的理解,非官方)。
注意:以下代码是在cmd上演示的,在cmd中是可以不使用print自动输出的
第一种
import 模块名
模块名.函数名([参数])
代码
import random
random.random()
结果显示
第二种
import 模块名 as 重命名
重命名.函数名([参数])
注意:这种方法使用的话,就不可以使用原来的模块名,除非重新导入
代码
import random as r
r.random()
结果显示
第三种
import 母模块.子模块
母模块.子模块.函数名([参数])
代码
import os.path
os.path.getsize("K:\\Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.exe")
结果显示
第四种
from 母模块 import 子模块
子模块.函数名([参数])
代码
from os import path
path.getsize("K:\\Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.exe")
结果显示
根据上面的使用情况,可以得出,在模块名很长的时候使用第二种重命名的方法(注意不可以使用原来的模块名了),在使用子模块的时候推荐第四种,其实第二和第四种可以混合使用,就是在子模块名后面加as
再加重命名即可。
五、python文件的另一种用法
一个python文件通常有两种使用方法,第一种是平常我们写的脚本,直接执行,第二种是 import导入到其他的 python 脚本中被调用执行,就是导入模块。
那么这么导入呢?
这时候我们就要认识一下包(package)的概念,Python中的包就是用来存放模块的文件夹,在Python中,我们可以用import
导入普通文件夹,但是我们必须清楚普通文件夹并不是包。那何为文件夹为一个Python的包呢?如果一个文件夹存在__init__.py
文件(该文件规定py文件的一些控制着包的导入行为),如果__init__.py
为空,那么我们在程序中导入包,就会自动导入模块的函数,即用的时候就是包名.py文件名.函数名。
在Python中,如果导入了某个包,该包的初始化会自动创建并执行__init__.py
文件,在__init__.py
文件中,一般用来书写一些初始化该包的代码,即在__init__.py
文件的__all__
容器内。
而if __name__ == '__main__':
的作用就是控制Python文件是脚本形式还是包的形式这两种情况执行代码的过程。if __name__ == '__main__':
下的代码就是让py文件只作为脚本执行,也就是第一种情况下才会被执行,而这句话之上的代码将可以用import
导入到其他脚本中是不会被执行的。
一般if __name__ == '__main__':
内的代码是用来做测试用到,就是说在写包文件时想要测试包里面的方法或者类时写的代码块。当别人导入这个包时,将不会被导入。
if __name__ == '__main__':
中的__main__
是每个Python文件默认有的,就相当于C语言里的main
函数,是进入代码的执行入口,__name__
是一个变量,如果在本文件里值为__main__
,如果是当成导入的模块的话,值为模块名,通过与__main__
进行判断。而将此文件当成包使用时,由于其值不等于__mian__
,所以不进入代码块。
如果还不是很清楚if __name = = '__main__':
用法可以看这篇博文:链接
代码
import os #导入os模块
class P:
def printf(self):
print("这是导入的模块")
print(__name__) #显示该文件值
print(os.__name__) #显示os模块名称
if __name__ == '__main__':
p = P()
p.printf()
print("qq")
显示结果