1.Python结构
工程 > 包 > 模块
Python工程: “Python项目中最大的文件夹(本质就是一个文件夹)” --- 左侧的 CODE文件夹 为Python工程
Python包: 本质就是一个文件夹,但是python包中具备具体的标识,如果没有标识则不能导入 --- 左侧的 01.Python基础 文件夹为python包
Python模块: 每一个 .py 文件 --- 左侧的 1.1 变量.py 为Python模块
2.Pytho包:
特征:内部包含一个初始文件,文件名为: __init__.py (双下划线)
3.Pytho模块的分类:
>.内置模块 Python解释器自带的 (random/math/date/funtools)
>.自定义模块 自己写的所有.py文件
>.第三方模块 必须通过外网下载才能导入
PythonWeb开发: django/flask
数据分析: pandas/numpy
人工智能: sekitlearn
4.导入模块
-导入包
import 包名
#导入包
import test_package #导入Python包
-导入模块
方法一:
import 包名.模块名 as 别名 该语句会将指定包下的模块导入到当前命名空间
# 包名.模块名 使用时同样需要 包名.模块名 的形式来调用
print("------------------------------导入模块1")
import test_package.Hello1
test_package.Hello1.show() #wzw:12345
#起别名 as ---
print("------------------------------as")
import test_package.Hello1 as hello
hello.show()
方法二:
前提:导入的模块要和当前空间同级
import 模块名 as 别名 此语句可以将整个模块导入到当前命名空间中
直接导入模块名 导入的模块必须和当前命名空间同级
import Hello2
Hello2.show()
方法三:
from 包名1.子包名2.... import 模块名 as 别名 允许你从模块中导入特定的函数、类或变量到当前命名空间。导入后,使用时无需加模块名前缀。
'''
# form 包名.子包名 import 模块名 从包中去导入一个模块, 运用最广
from test_package import Hello1
Hello1.show() #此方式是将 Hello1 模块整个导入到当前命名空间
from test_package.Hello1 import show
show() #此方式是从 Hello1 模块中仅导入 show 函数到当前命名空间
from Hello2 import show
show() #yst:6789 在 Hello2 中调用
5. __init__.py 文件的用法
当包被导入时,__init__.py 中的代码会自动执行,常用于:
>.定义包的公共接口
>.初始化全局变量或配置
>.执行包级别配置(如日志初始化)
'''
print(test_package.USERNAME) #WangZhaoWei
test_package.test_connect_mysql() # mysql数据库已连接.... 连接数据库的函数
6.动态导入包
- import 导入模块原理:使用了内置函数 __import__()
#第一种方式 -- 不建议
module_name = "random" #将 random随机数库值传递给module_name
res = __import__(module_name)
print(res.randint(1,50)) #在1-50中随机打印一个数字
#第二种方式:导入动态导入的库
import importlib
module_name = "math" #值传递 将math内置数模块传递给module_name
res = importlib.import_module(module_name)
print(res.pi) #3.141592653589793 打印出圆周率近似值
7.导入模块占用内存问题
无论导入多少次同一模块,都只占用同一内存地址
#测试导入模块内存问题
import math as m1
import math as m2
import math as m3 #导入三次math比较其地址
print(m1 is m2) #True
print(m1 is m3) #True 证明同一模块只会占用同一块地址