python基础知识——包

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

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

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

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

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

[[email protected] 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 python
def func1():      #bonf包下模块test1中有个func1函数
    print("bonf")

~
"bonf/test1.py" 3L, 50C    

#另一个包conf
#!/usr/bin/env python
def 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 "<stdin>", line 1, in <module>
NameError: name ‘donf‘ is not defined
>>> bonf.donf.test10.func()
2层

相对导入和绝对导入

>>> from bonf import test1  #绝对
>>> from . import test1    #相对
时间: 2024-10-08 23:24:43

python基础知识——包的相关文章

python 基础知识(一)

                                       python 基础知识(一) 一.python发展介绍 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC 语言的一种继承.之所以选中Python(大蟒蛇的意思)作为程序的名字,是因为他是一个叫Monty Python的喜剧团体的爱好者.Python是从ABC发展起来,主要受到了Modula-3(另一种相当

Python基础知识梳理 - 第01部分

在开始Python基础知识梳理前, 先安装下环境. 以下过程是在Linux操作系统, root用户下进行的, 主要安装了2.7版本的python, 和pip, ipython, virtualenv等工具, 最后是vim的设置. 1. 安装python. # wget https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz Python-2.7.14 # ./configure --prefix=/usr/local/python27

python基础知识总结

python有段时间没用了,实在是惭愧啊,屌丝今天决定开始对python基础知识重新进行总结,以慰自心. 一.python概念 Python是著名的"龟叔"Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. python定位"优雅","简单","明确" 二.python安装 略 三.python基础 1.数据类型 整数: Python可以处理任意大小的整数,当然包括负整数,在程序

python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding:utf-8from com.wenhy.crawler_baidu_baike import url_manager, html_downloader, html_parser, html_outputer print "爬虫百度百科调度入口" # 创建爬虫类class SpiderMai

python基础知识(二)

以下内容,作为python基础知识的补充,主要涉及基础数据类型的创建及特性,以及新数据类型Bytes类型的引入介绍

python基础知识1

Python的基础知识: if-elif-else while-else break continue from..import import.. dir(),当提供一个模块明的时候,返回模块定义的名称列表 列表[],元祖(),字典{} 面向对象编程:self,__init__方法 try-except try-finally python的GUI库:Tkinter   床架一个root,把创建的其它元素放到root里面来 python基础知识1

Python基础知识两部曲:二

如果没有看基础部分第一章,请前往Python基础知识两部曲:一 8.函数 1.定义函数: 使用关键字def来告诉python你要定义一个函数 接着指出函数名:如下面函数名是--greet_user ()是必须带上的,这里可以可以传递一些参数,也可以不传 以:结尾,且与后面所有的缩进构成了函数体 调用函数直接写上函数名,如果有参数记得带上参数 1. 无参数的函数: def greet_user(): """显示简单的函数体""" print(&qu

Python基础知识梳理 - 第02部分

本文是Python基础知识的第二篇, 主要是对内置对象类型的介绍, 涉及的类型如下表. 数字类型 在Python中, 数字并不是一个真正的对象类型, 而是一组类似类型的分类, 如整数和浮点数, 复数等. Python还提供了若干处理数字对象的工具, 如内置数学函数pow, abs等, 标准库math, random等. 看下数字的简单使用. In [15]: 123 + 234 Out[15]: 357 In [16]: 1.5 * 4 Out[16]: 6.0 In [32]: pow(2,

Python基础知识目录

<table><tr><td bgcolor=PowderBlue><font face="" color=green size=6>Python基础知识目录</font></td></tr></table> <table><tr><td bgcolor=pink><font face="微软雅黑" size = 4 color