第十三章 模块和包

1.模块

1.模块就是import可以导入直接使用的py文件

一个模块如果执行多次import是什么效果:只执行一次

凡是导入一个模块就相当于执行了这个文件,当你导入一个模块就可以使用模块中的名字

mymodule.py
print(‘执行了mymodule‘)

import mymodule
# 执行了mymodule

当你导入了一个模块那么在导入这个模块所处的命名空间中,就有了一个名字,指向属于自己的空间,模块中的代码从上至下依次执行,可以通过模块访问模块中的名字,不能脱离模块引用模块中的名字

mymodule.py
print(‘执行了mymodule‘)
money = 1000

def func():
    print(‘My moneny is %s‘ % money)

import mymodule
mymodule.func()

# 执行了mymodule
# My moneny is 1000

func()
#     func()
# NameError: name ‘func‘ is not defined

当模块和当前文件中都有相同的名字,模块中的方法引用模块中的名字

mymodule.py
print(‘执行了mymodule‘)
money = 1000

def func():
    print(‘My moneny is %s‘ % money)

import mymodule

money = 2000
mymodule.func()

# 执行了mymodule
# My moneny is 1000# 说明:模块并没有导入执行文件,所以模块中的方法引用不到执行文件中的名字

2.import .. as ..使用别名

mymodule.py
print(‘执行了mymodule‘)
money = 1000

def func():
    print(‘My moneny is %s‘ % money)

import mymodule as mm
mm.func() # --> 使用别名

# 执行了mymodule
# My moneny is 1000

3.import..from

mymodule.py
print(‘执行了mymodule‘)
money = 1000

def func():
    print(‘My moneny is %s‘ % money)

from mymodule import func
func()
def func():
    print(123)
func()
# 执行了mymodule
# My moneny is 1000
# 123

# 说明:因为导入mymodule中的func,所以第一个func(),为mymodule中的方法,输出结果为‘My moneny is 1000‘
# 而第二个func()是因为程序中重新定义了func,所以直接执行程序中的func()函数
# 即使程序使用from..import的形式,也会在内存里开辟相应的命名空间,将模块中的所有名字存在内存里
# 所有这样也不会减少使用内存,只不过引用是不可视的

4.import..from..as..使用别名

mymodule.py
print(‘执行了mymodule‘)
money = 1000

def func():
    print(‘My moneny is %s‘ % money)

from mymodule import func as f, money as m
f()
print(m)

# 执行了mymodule
# My moneny is 1000
# 1000

5.import和from..import的区别与联系

import
import一个模块 就相当于执行了这个模块
那么在全局,就有了一个模块名字,指向属于自己的空间
空间里存储了所有文件中的名字
起别名import ... as ...

from import
仍然会执行整个文件
文件中的名字会被存储在一块独立的内存空间
import后面的名字会出现在全局,相当于对独立命名空间中的一个引用
from import 也支持as语句 也支持 导入多个名字
from import * 相当于导入所有名字,*和被导入模块__all__是互相影响的

6.模块的导入顺序

导入模块要放到文件开始

内置模块 -- 扩展模块 -- 自定义模块

2.包

1.包是什么

包就是一个由一组py文件组成而且包含一个__init__.py文件的文件夹

__init__.py文件的作用

2.从包中导入一个模块,可以使用.描述文件夹之间的关系

3.使用import..as..别名的方式导入包中的模块

4.使用from..import..

5.在包中导入一个模块要从包名开始精确到一个模块结束

绝对导入 -- 不利于代码迁移

相对导入 -- 从包的外部导入包的内部的关系,相对导入才生效

带有相对导入路径的文件不能直接执行 -- 会报错

6.__init__.py的作用

导入一个文件相当于执行了这个文件中的代码

但是导入一个包相当于执行这个包中的init文件

import后面的这个名字 永远会出现在全局的名命空间里

参考:http://www.cnblogs.com/Eva-J/articles/7292109.html

原文地址:https://www.cnblogs.com/gnaix/p/9152273.html

时间: 2024-10-05 20:01:42

第十三章 模块和包的相关文章

python学习第十三天 -模块和包

模块和包 大家都知道,在计算机程序开发的过程中,随着程序代码越写越多,这样代码就会越不容易维护. 有时候为了好维护代码,把不同功能的函数放到不同的xx.py文件中. 在python中,一个.py文件就称为一个模块. 使用模块有什么好处? 1.提供代码可维护性. 2.可以避免函数名和变量名冲突.如果两个相同的函数名在两个模块中,直接引用的时候,可以直接显示调用xx.function即可. 但是如果不同的人编写的模块名又是相同的怎么办?为了解决模块名相同,Python又引用包的概念. 在python

Python第九章模块和包(2)

1.如果文件下没有__init__.py文件,程序将不会认为这是一个Python的包. 2.如果要使用from 包  import  *  则需要 这样做. 是模块中包含 方法 的文件没有包含类: #coding=utf-8from bao import aa.say()from bao import bb.say() 使用from bao import * 在  __init__.py文件下写入 : __all__==['a','b'] 其中 a  b  就是这个包下的文件名称 3.模块中包含

Python之旅.第四章.模块与包.总结(未完待遇)

一.模块 模块: 一系列功能的集合体,在python中一个py文件就是一个模块,模块名就是py文件的文件名: 模块的好处: 1.减少重复的代码 2.拿来主义 定义模块: 就是创建一个py文件: 使用模块: 关键字:import 用法:import 模块名(不要加py后缀) 注意区分执行文件和模块文件,执行文件是你当前逻辑程序,模块文件是你用来调用功能的文件: 首次导入模块: 1.创建一个模块的名称空间 2.执行模块文件,将模块文件产生的名字存放于创建的模块名称空间 3.当执行文件中拿到一个模块名

Python第九章模块和包

1.import Python文件的时候文件名不能跟Python中自带的关键字重复,否则无法使用关键字的方法. 2.Reload(),重载例子 import sysreload(sys)sys.setdefaultencoding("utf-8") 3 pycharm设置默认输utf-8 Setting-------

perl 第十四章 Perl5的包和模块

第十四章 Perl5的包和模块 by flamephoenix 一.require函数  1.require函数和子程序库  2.用require指定Perl版本二.包  1.包的定义  2.在包间切换  3.main包  4.包的引用  5.指定无当前包  6.包和子程序  7.用包定义私有数据  8.包和系统变量  9.访问符号表三.模块  1.创建模块  2.导入模块  3.预定义模块 一.require函数    用require函数可以把程序分割成多个文件并创建函数库.例如,在myfi

第 8 章: 模块, 包与分发---Word

第八章: 模块, 包 与 分发 描述: 大型Python程序以模块和包的形式组织.另外,Python标准库中包含大量模块.本章详细介绍模块和包系统.还将提供有关如何安装第三方模块和分发源代码的信息. 8.1模块与import语句 任何Python源文件都能以模块的形式使用.例如,考虑以下代码: # spam.py a = 37 def foo (): print("I'm foo and a is Is" % a) def bar(): print("I'm bar and

perl5 第十三章 Perl的面向对象编程

第十三章 Perl的面向对象编程 by flamephoenix 一.模块简介二.Perl中的类三.创建类四.构造函数 实例变量 五.方法六.方法的输出七.方法的调用八.重载九.析构函数十.继承十一.方法的重载十二.Perl类和对象的一些注释 本章介绍如何使用Perl的面向对象编程(OOP)特性及如何构建对象,还包括继承.方法重载和数据封装等内容.一.模块简介    模块(module)就是Perl包(pachage).Perl中的对象基于对包中数据项的引用.(引用见第x章引用).详见http:

第十三章、磁盘文件管理

第十三章.磁盘管理 本章内容 磁盘结构 1.分区类型 管理分区 2.管理文件系统 3.挂载设备 管理虚拟内存 设备文件 ?I/O Ports: I/O设备地址 ?一切皆文件: open(), read(), write(), close() ?  设备类型: 块设备:block,存取单位"块",磁盘 字符设备:char,存取单位"字符",键盘 ?  设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信 ?  设备号码: 主设备号:major numb

Lua语言基础汇总(11) -- Lua中的模块与包

前言 从Lua5.1版本开始,就对模块和包添加了新的支持,可是使用require和module来定义和使用模块和包.require用于使用模块,module用于创建模块.简单的说,一个模块就是一个程序库,可以通过require来加载.然后便得到了一个全局变量,表示一个table.这个table就像是一个命名空间,其内容就是模块中导出的所有东西,比如函数和常量,一个符合规范的模块还应使require返回这个table.现在就来具体的总结一下require和module这两个函数. require函