一、模块
模块
是一个python文件,以.py结尾。模块能定义函数、类和变量,模块里也能包含可执行的代码。
模块的导入方式
[from 模块名]import [模块|类|变量|函数|*][as 别名]
常见的有以下几种形式:
import 模块名
import 模块名1,模块名2
模块名.功能名()
import time # 导入python内置的time模块
print("hello")
time.sleep(5) # 通过.就可以使用模块内部的全部功能(类、函数、变量)
print("world")
from 模块名 import 功能名
功能名()
from time import sleep
print("hello")
sleep(5)
print("world")
from 模块名 import *
功能名()
from time import *
print("hello")
sleep(5)
print("world")
#模块定义别名
import 模块名 as 别名
#功能定义别名
from 模块名 import 功能 as 别名
import time as tt
print("hello")
tt.sleep(5)
print("world")
from time import sleep as sl
print("hello")
sl(5)
print("world")
自定义模块
在文件夹下新建一个python文件
命名
定义模块内的变量、函数等
引用
注意:当导入多个模块时 ,且模块内有同名功能,当调用这个同名功能的时候,调用到的是后面导入的模块的功能
from my_module_1 import test
from my_module_2 import test
test(1, 2)
# 运行结果:-1
-
测试模块
内置变量__name__
my_module_1.py
def test(a, b):
print(a + b)
if __name__=='__main__'
test(1, 2)
内置变量__name__:在自定义模块文件中等于__main__,if条件为真,执行测试函数。但当模块以from的形式导入时,if条件为假,测试函数不执行。
内置变量__all__
my_module_1.py
__all__=['test_A']
def test_A():
print("test A")
def test_B():
print("test B")
内置变量__all__:如果一个模块文件中有‘__all__'变量,当使用’from xxx import *‘导入时,只能导入这个列表中的元素
test_B()会报错
二、包
模块文件(my_module_1,my_module_2...)+__init__.py=包(package)
创建包
在根目录下创建package
命名
包含__init__.py的packag创建好了
注意:只要包含__init__.py的文件就是包(图案和其他文件夹不一样)
package内创建新模块
命名
创建好了
导入包
- 方式一
import 包名.模块名
包名.模块名.目标
import my_package.my_module_1
import my_package.my_module_2
my_package.my_module_1.info_print1()
my_package.my_module_2.info_print2()
from 包名 import 模块名
from my_package import my_module_1
from my_package import my_module_2
my_module_1.info_print1()
my_module_2.info_print2()
from 包名.模块名 import 目标
from my_package.my_module_1 import info_print1
from my_package.my_module_2 import info_print2
info_print1()
info_print2()
- 方式二
在‘__init.py_’文件中添加‘__all__=[]’,控制允许导入的模块列表
from 包名 import*
模块名.目标
test.py
from my_package import *
my_module_1.info_print1()
__init__.py
__all__ = ['my_module_1']
安装第三方包
- 以pycharm为例
右下角-python环境-Interpreter Settings
点击+号
搜索第三方包,找到符合要求的,点击右下角Install Package
注:如果安装速度比较慢的话,可以勾选options,然后输入清华大学的镜像网站:
https://pypi.tuna.tsinghua.edu.cn/simple
安装完之后,测试一下是否安装成功
三、异常、模块、包综合案例
cr.黑马程序员
str_util.py
def str_reverse(s):
"""
功能是将字符串完成反转
:param s:将被反转的字符串
:return:反转后的字符串
"""
return s[::-1] # 反转字符串
def substr(s, x, y):
"""
按照给定下标完成给定字符串的切片
:param s: 即将被切片的字符串
:param x: 切片的开始下标
:param y: 切片的结束下标
:return: 切片完成后的字符串
"""
return s[x:y]
if __name__ == '__main__':
print(str_reverse("blackpink"))
print(substr("blackpink", 2, 5))
file_util.py
def print_file_info(file_name):
"""
功能是:将给定路径的文件内容输出到控制台中
:param file_name:即将读取的文件路径
:return:None
"""
f = None
try:
f = open(file_name,"r",encoding="UTF-8")
content = f.read()
print(content)
except Exception as e:
print(f"error!{e}")
finally:
if f: # 如果变量是None,表示False,如果有任何内容,就是True
f.close()
def append_to_file(file_name,data):
"""
功能:将指定的数据追加到指定的文件中
:param file_name:指定的文件的路径
:param data:指定的数据
:return:None
"""
f = open(file_name, "a", encoding="UTF-8")
f.write(data)
f.write("\n")
f.close()
if __name__ == '__main__':
# print_file_info("D:/abc.txt")
append_to_file("D:/twice.txt", "TWICE!")
test,py
import my_utils.str_util
from my_utils import file_util
print(my_utils.str_util.str_reverse("savage"))
print(my_utils.str_util.substr("aespa", 0, 2))
file_util.append_to_file("D:/twice.txt", "Best girl group")
file_util.print_file_info("D:/twice.txt")
运行结果: