博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python基础知识——包
阅读量:4880 次
发布时间:2019-06-11

本文共 1730 字,大约阅读时间需要 5 分钟。

包是一种通过使用“模块名”来组织python模块的名称空间的方式。

无论是import形式还是from...import形式,凡是在导入语句中(不是在使用时)遇到带点的,就需要意识到——这是包。

包是目录级的,文件夹是用来组成py文件(包的本质就是一个包含__init__.py文件的目录)。

import导入文件时,产生名称空间中的名字来源于文件,import包,产生的名称空间的名字同样来源于文件,即包下的__init__.py,导入包本质就是在导入该文件。

在python3中,即使包下没有__init__.py文件,import包仍然不会报错,而在python2中,包下一定要有该文件,否则import包报错。

[root@7 module]# tree.├── bonf  #包│?? ├── __pycache__│?? │?? └── test1.cpython-36.pyc  #导入的时候生成的缓存文件│?? └── test1.py 模块└── conf   #包    ├── __pycache__    │?? ├── test2.cpython-36.pyc    │?? └── test1.cpython-36.pyc    ├── test2.py   #模块    └── test.py  #模块4 directories, 6 files#包中的内容#!/usr/bin/env pythondef func1():      #bonf包下模块test1中有个func1函数    print("bonf")                                                               ~                                                                       "bonf/test1.py" 3L, 50C    #另一个包conf#!/usr/bin/env pythondef func1():    #包conf下模块test1下函数func1    print("函数1")                                                            ~                                                                       "conf/test1.py" 3L, 53C

现在来导入这两个包

>>> import bonf.test1>>> import conf.test1  #没有报错

现在来引用其中的函数

>>> bonf.test1.func1()bonf>>> conf.test1.func1()  #没有毛病函数1

我们可以看到,两个包下有同名的模块也不会冲突,它们来自各自的命名空间。

也是可以使用from-import,但是这样会覆盖命名空间。

>>> from conf import test1>>> test1.func1()函数1>>> from bonf import test1>>> test1.func1()bonf

多层也是可以的

>>> import bonf.donf.test10>>> donf.test10.func()   #少一层都不行,路径要对Traceback (most recent call last):  File "
", line 1, in
NameError: name 'donf' is not defined>>> bonf.donf.test10.func()2层

相对导入和绝对导入

>>> from bonf import test1  #绝对>>> from . import test1    #相对

 

转载于:https://www.cnblogs.com/yangmingxianshen/p/7847012.html

你可能感兴趣的文章
题解报告:hdu 1087 Super Jumping! Jumping! Jumping!
查看>>
汇编实验一
查看>>
2015 Multi-University Training Contest 6 hdu 5357 Easy Sequence
查看>>
HDU 4856 Tunnels
查看>>
常用的页面加载慢的解决方案
查看>>
Excel催化剂开源第11波-动态数组函数技术开源及要点讲述
查看>>
php设计模式课程---9、桥接模式是什么
查看>>
thinkphp5.0的验证码安装和相关错误
查看>>
第二百七十六节,MySQL数据库,【显示、创建、选定、删除数据库】,【用户管理、对用户增删改查以及授权】...
查看>>
第一百八十六节,jQuery,验证表单插件,Ajax 表单插件,验证和提交表单
查看>>
HDU 6351 Beautiful Now(DFS)多校题解
查看>>
Centos-bzip2压缩文件-bzip2 bunzip2
查看>>
集合00_Java集合框架
查看>>
百度lbs学习
查看>>
centos里启用snmp的监控
查看>>
第四节:tensorflow图的基本操作
查看>>
【详●析】危险路径
查看>>
二叉树中和为某一值的所有路径
查看>>
Struts2学习第五课 通过和ServletAPI耦合的方式获取WEB资源
查看>>
sns 基于校园的社交网络服务(三版-1期)小结部分问题
查看>>