学习笔记:Python3 模块
仅为个人查阅使用,如有错误还请指正。
在Python中,一个.py文件就称之为一个模块(Module)。
使用模块的好处是大大提高了代码的可维护性,一个模块可以被其他地方引用。
通常编写程序的时候,经常引用其他模块,包括Python内置的模块和来自第三方的模块
使用模块可以避免函数名和变量名冲突,在自定义模块的时候,不要与内置函数名字冲突。
一个项目可能由多人完成,就会存在模块名相同,Python又引入了按目录来组织模块的方法(包)
推荐使用包:每个包必须要有__init__.py文件,可以是空文件,也可以有Python代码。
# 包结构如下
School
|__ __init__.py
|__ law.py
|__ computer.py
|__ foreign.py
-
自定义模块
其实就是在一个py文件里面写函数,或者类。
"""This is a module for absolute value""" # 任何模块代码的第一个字符串被视为模块的文档注释 __author__ = "lowkeyao" # 署名 # 可以把上面的删除掉,看具体项目安排。 def my_abs(x): # 这是对x的值就不做异常处理,只是简单的了解。 if x >= 0: return x else: return -x
-
导入模块
以math这个内置模块为例
-
第一种:可以访问math模块中所有公开的函数,变量,类。
import math print(math.pow(2, 0.5)) print(math.pi) print(math.sqrt(100))
-
第二种:只能使用导入的
pow()
函数,pi
变量。除此之外都不能用from math import pow, pi print(pow(2, 0.5)) print(pi)
针对第二种的导入方式:可能存在同名的方法,造成冲突。可以使用别名(as)去解决这个问题。
from math import log from logging import log as logger print(log(10)) logger(10, "from logging module")
也可以使用import去避免这个冲突
import math, logging print(math.log(10)) logging.log(10, "something")
注意:以上用logging模块里面的log只是用来举例子,实际开发不是这样使用的。
-
-
动态模块
两个不同的模块提供的函数功能是一模一样的。
随着版本更新,模块名可能改变,但是功能没变。而当前这个程序需要满足新旧环境都能执行。
举个例子,看看就好。
try: from io import StringIO except ImportError: from StringIO import StringIO
-
__future__模块
看名字就知道是未来的意思,对于Python2,Python3就是未来。也就意味着只给旧版本使用。
我们知道,Python2和Python3其中一个区别就是**
print
**的输出格式。-
例1:在Python2环境调用,使用Python3
print
的语法格式。from __future__ import print_function print("use python3 print function")
-
例2:在Python2环境调用,使用Python3
division
的语法格式。Python2默认整除后向下取整,Python3是直接得到小数位。
from __future__ import division print 5/2
-
-
常用内建模块(标准库)
这里有些人可能会想到标准库。按照官网的说法,模块跟标准库是有点区别的。
我们平时在使用的时候,就认为他们是同一类就好了,别太深究。因为我说不清楚(笑脸)
有兴趣的可以去买一本Python标准库的书(一千多页),或者通过官网查找。
-
os模块
os.remove() # 删除一个文件 os.getcwd() # 获取当前工作目录,即当前python脚本工作的目录路径 os.path.exists(path) # 如果path存在,返回True;如果path不存在,返回False os.path.isfile(path) # 如果path是一个存在的文件,返回True。否则返回False os.path.isdir(path) # 如果path是一个存在的目录,则返回True。否则返回False
-
datetime模块
datetime.datetime.now() # 当前时间 datetime.datetime.now() + datetime.timedelta(3) # 当前时间+3 datetime.datetime.now() + datetime.timedelta(-3) # 当前时间-3 datetime.datetime.now() + datetime.timedelta(hours=3) # 当前时间+3小 datetime.datetime.now() + datetime.timedelta(minutes=30) # 当前时间+30 datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') # 转字符串格式 datetime.datetime.strptime('2019-10-01', "%Y-%m-%d") # 转时间格式
-
json模块
import json # 这是直接操作内存对象 dic = {'a1':'b1','a2':'b2','a3':'b3'} str_dic = json.dumps(dic) # 序列化:将一个字典转换成一个字符串 print(type(str_dic),str_dic) # <class 'str'> {"a1": "b1", "a2": "b2", "a3": "b3"} dic2 = json.loads(str_dic) # 反序列化:将一个字符串格式的字典转换成一个字典 print(type(dic2),dic2) # <class 'dict'> {"a1": "b1", "a2": "b2", "a3": "b3"} # 这个是用来操作文件的 f = open('json_file','w') dic3 = {'a1':'b1','a2':'b2','a3':'b3'} json.dump(dic3,f) # dump方法接收一个文件句柄,直接将字典转换成json字符串写入文件 f.close() f1 = open('json_file') dic4 = json.load(f1) # load方法接收一个文件句柄,直接将文件中的json字符串转换成数据结构返回 f1.close() print(type(dic4),dic4)
-
-
安装第三方库
很简单的一条命令:
pip install requests
可以在这个网址查找需要安装的第三方库:https://pypi.org/
-
常用第三方库
使用第三方模块,要先安装。其次去查看怎么使用。
比如我要获取一个网站的信息,可以通过requests这个模块快速获取。
三行代码轻松访问豆瓣首页
import requests r = requests.get('https://www.douban.com/') # 豆瓣首页 print(r.text) # 整个网页的文本信息
所以说:第三方库非常方便开发,这也就是为什么Python这么强大。
Scikit-learn、TensorFlow、PyTorch、Theano、Keras
以上这些都是人工智能领域方向的第三方库,还有很多,不再一一例举。
注意:要使用第三方库,就是看他的官网文档。作为一个程序员,不会看文档,不会看源码。你就废了。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· 趁着过年的时候手搓了一个低代码框架
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· 乌龟冬眠箱湿度监控系统和AI辅助建议功能的实现