模块

1.模块定义
用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质上就是.py结尾python文件 分类:内置模块(又称标准库)执行 help('modules')查看所有python自带模块列表
第三方开源模块,可通过 pip install 模块名 联网安装
自定义模块 2.导入模块
本质:导入模块的本质就是把python文件解释一遍,
导入包的本质就是把包文件下面的init.py文件运行一遍。 1)同目录下模块的导入
#同级目录下模块的导入 import module_name #直接导入模块
import module1_name,module2_name #导入多个模块 使用:模块名.函数名
from modeule_name import * #导入模块中所有函数和变量等。。。不推荐使用
from modeule_name import m1,m2,m3 #只导入模块中函数m1,m2,m3 使用:直接使用m1,m2,m3就可以
from modeule_name import m1 as m #导入module_name模块中函数m1并且将函数重新复制给m 使用:直接用调用m 2)不同目录下模块的导入
#不同目录下模块的导入 当前文件main.py #目录结构
# ├── Credit_card
# │
# ├── core
# │ ├── __init__.py
# │ └── main.py # 当前文件
# ├── conf
# │ ├── __init__.py
# │ └── setting.py
# │ └── lzl.py import sys,os
#获取当前目录的上上级目录绝对路径,也就是Credit_card
credit_card_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
#把Credit_card目录加入到系统路径
sys.path.insert(0,credit_card_path) #查看系统环境路径
print(sys.path) 例子:
如果main文件夹要用conf文件夹下的setting文件,直接导入是不行的
应该:
fron conf import setting
setting.函数名() #这样执行setting模块中的函数 3)不同目录下模块连环导入
#不同目录多个模块之间互相导入 #目录结构
# ├── Credit_card
# │
# ├── core
# │ ├── __init__.py
# │ └── main.py # 当前文件
# ├── conf
# │ ├── __init__.py
# │ └── setting.py
# │ └── lzl.py 如果在setting文件中调用模块lzl.py,可以用语句 import lzl,但是如果这样,
我们在main.py文件中调用setting文件时,就会报错#ImportError: No module named 'lzl'
这个时候我们需要将 import lzl 换为 from . import lzl
然后main.py文件中调用setting文件时,才可以正常执行。 4)不同目录多个模块相互导入,用相对路径 Root
├── Credit_card
├── README.md
├── core
│ ├── __init__.py
│ └── main.py
├── conf
│ ├── __init__.py
│ └── setting.py
│ └── lzl.py lzl.py文件内容:
def name():
print("name is lzl") setting.py文件内容:
#当前文件settings,调用lzl.py模块 相对路径
from . import lzl #通过相对路径导入模块lzl
def set():
print("in the settings")
lzl.name() #运行lzl模块下的函数 set() #执行函数set Core目录下的文件中的mian.py文件内容:
#不同目录之间连环import 当前文件main.py 相对路径 from Root.Credit_card.conf import settings
settings.set() #执行settings下的函数 注意:
lzl.py以及settings.py文件未变,main.py文件去掉了繁杂的sys.path添加的过程,
直接执行from Root.Credit_card.conf import settings,使用相对路径,更加
简洁方便!

最新文章

  1. C#调用C++动态库方法及动态库封装总结
  2. python基础之元组、文件操作、编码、函数、变量
  3. ARP协议学习
  4. 谷歌浏览器-如何让Chrome默认以隐身模式启动?
  5. VSC 使用Git进行版本控制
  6. CentOS-6.5安装配置Tomcat7
  7. Nginx - Additional Modules, About Your Visitors
  8. TCP/IP协议栈及OSI参考模型详解
  9. UI进阶 解析XML 解析JSON
  10. 编写一个Java应用程序,该程序包括3个类:Monkey类、People类和主类 E。要求: (1) Monkey类中有个构造方法:Monkey (String s),并且有个public void speak() 方法,在speak方法中输出“咿咿呀呀......”的信息。 (2)People类是Monkey类的子类,在People类中重写方法speak(),在speak方法 中输出“小样的,不
  11. VMware ESXi CentOS Linux虚拟机安装VMware Tools教
  12. 进程控制之waitid函数
  13. richTextBox插入表格
  14. jquery常用方法以及详解
  15. asp.net BulletedList样式修改 css
  16. windows下的mongodb下载安装
  17. POJ 2914 Minimum Cut 最小割图论
  18. (翻译) Android Accounts Api使用指南
  19. python编程快速上手之第8章实践项目参考答案
  20. Android简易实战教程--第五十话《动画扫描》

热门文章

  1. 算法(Algorithms)第4版 练习 1.3.27 1.3.28
  2. python之tkinter_1
  3. BZOJ 1529 [POI2005]ska Piggy banks:并查集
  4. tensorflow knn 预测房价 注意有 Min-Max Scaling
  5. Listen 82
  6. Java 并发 —— Java 标准库对并发的支持及 java.util.concurrent 包
  7. 淘宝双十一页面(Flexible)
  8. tcp攻击
  9. zabbix告警邮件美化
  10. Xcode 中的main.m