Python篇1.15---模块与包

一.模块

1 什么是模块?

一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀。

2 为何要使用模块?

如果你退出python解释器然后重新进入,那么你之前定义的函数或者变量都将丢失,因此我们通常将程序写到文件中以便永久保存下来,需要时就通过python test.py方式去执行,此时test.py被称为脚本script。

随着程序的发展,功能越来越多,为了方便管理,我们通常将程序分成一个个的文件,这样做程序的结构更清晰,方便管理。这时我们不仅仅可以把这些文件当做脚本去执行,还可以把他们当做模块来导入到其他的模块中,实现了功能的重复利用,

3.如何使用模块?

3.1 import

3.1.1建立spam.py,文件名spam.py,模块名spam

#spam.py

print(‘from the spam.py‘)

money = 1000

def read1():
    print(‘spam->read1->money‘,money)

def read2():
    print(‘spam->read2 calling read‘)
    read1()

def change():
    global money
    money = 0

建立test.py文件

模块可以包含可执行的语句和函数的定义,这些语句的目的是初始化模块,它们只在模块名第一次遇到导入import语句时才执行(import语句是可以在程序中的任意位置使用的,且针对同一个模块很import多次,为了防止你重复导入,python的优化手段是:第一次导入后就将模块名加载到内存了,后续的import语句仅是对已经加载大内存中的模块对象增加了一次引用,不会重新执行模块内的语句),如下

import spam  ##只在第一次导入时才执行spam.py内代码,此处的显式效果是只打印一次‘from the spam.py‘,当然其他的顶级代码也都被执行了,只不过没有显示效果.

import spam
import spam

#运行结果
from the spam.py

# import sys
# print(sys.modules)

我们可以从sys.module中找到当前已经加载的模块,sys.module是一个字典,内部包含模块名与模块对象的映射,该字典决定了导入模块时是否需要重新导入。

3.1.2每个模块都是一个独立的名称空间,定义在这个模块中的函数,把这个模块的名称空间当做全局名称空间,这样我们在编写自己的模块时,就不用担心我们定义在自己模块中全局变量会在被导入时,与使用者的全局变量冲突

1 #测试一:money与spam.money不冲突
 2 #test.py
 3 import spam
 4 money=10
 5 print(spam.money)
 6
 7 ‘‘‘
 8 执行结果:
 9 from the spam.py
10 1000
11 ‘‘‘
1 #测试二:read1与spam.read1不冲突
 2 #test.py
 3 import spam
 4 def read1():
 5     print(‘========‘)
 6 spam.read1()
 7
 8 ‘‘‘
 9 执行结果:
10 from the spam.py
11 spam->read1->money 1000
12 ‘‘‘
1 #测试三:执行spam.change()操作的全局变量money仍然是spam中的
 2 #test.py
 3 import spam
 4 money=1
 5 spam.change()
 6 print(money)
 7
 8 ‘‘‘
 9 执行结果:
10 from the spam.py
11 1
12 ‘‘‘

3.1.3 总结:首次导入模块spam时会做三件事:

1.为源文件(spam模块)创建新的名称空间,在spam中定义的函数和方法若是使用到了global时访问的就是这个名称空间。

2.在新创建的命名空间中执行模块中包含的代码,见初始导入import spam

1 提示:导入模块时到底执行了什么?
2
3 In fact function definitions are also ‘statements’ that are ‘executed’; the execution of a module-level function definition enters the function name in the module’s global symbol table.
4 事实上函数定义也是“被执行”的语句,模块级别函数定义的执行将函数名放入模块全局名称空间表,用globals()可以查看

3.创建名字spam来引用该命名空间

1 这个名字和变量名没什么区别,都是‘第一类的’,且使用spam.名字的方式可以访问spam.py文件中定义的名字,spam.名字与test.py中的名字来自两个完全不同的地方。

3.1.4 为模块名起别名,相当于m1=1;m2=m1

1 import spam as sm
2 print(sm.money)
时间: 2024-10-12 02:37:00

Python篇1.15---模块与包的相关文章

2015/9/15 Python基础(12):模块和包

模块是用来组织 Python 代码的方法,而包则是用来组织模块的. 当代码量很大时,我们一般会把代码分成几个有组织的代码段,然后每个代码段之间有一定的联系.代码单之间是共享的,所以Python允许调入一个模块,允许使用其他模块的属性利用之前的工作成果,实现代码重用.那些自我包含并且有组织的代码片段就是模块(module),将其他模块中属性附加到你的模块中的操作较导入(import) 模块是逻辑上的说法,而它们在物理层是一个个独立的文件,模块的文件名就是模块的名字加拓展名.py.与其他可以导入类的

Python之异常处理、模块与包

MarkdownPad Document 错误与异常处理 程序中错误分成两种 语法错误:过不了Python解释器 逻辑错误 异常处理 什么是异常处理 Python解释器检测到错误,触发异常,在发生异常时捕捉异常,如果捕捉成功则进入另外一个处理分支,是程序不会崩溃,这就是异常处理 异常处理机制就是来增强程序的健壮性与容错性 常用异常 AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x IOError 输入/输出异常:基本上是无法打开文件 ImportEr

用Python玩转数据:python的函数、模块和包

Python函数 函数可以看成类似于数学中的函数,完成一个特定功能的一段代码. -绝对值函数 abs() -类型函数 type() -四舍五入函数 round() Python中有很多内建函数,即不需要另外导入的函数. -cmp(), str() 和 type()适用于所有标准类型.以下是数值型内建函数和实用内建函数. >>> dir(_builtins_) 命令可以看到Python中的内建变量和内建函数. >>> help(abs) 命令用于查看abs函数的帮助信息.

Python基础(递归、模块、包以及正则)-day05

写在前面 上课第四天,打卡: 如果再见不能红着眼,是否还能红着脸: 一.协程函数(生成器:yield的表达式形式) 1.yield 的语句形式: yield 1 2.yield 的表达式形式: x=yield 注意:next(g) #等同于 g.send(None),示例如下: 1 def deco(func): 2 def wrapper(*args,**kwargs): 3 res=func(*args,**kwargs) 4 next(res) 5 return res 6 return

Python全栈自动化系列之Python编程基础(模块和包)

一.模块 1)定义 模块:模块是一个Python文件,以.py结尾,包含了Python对象定义和Python函数包:Python中的包就是一个包含一个__init__.py文件的目录(文件夹) 2)模块的作用 a.模块让你能够有逻辑地组织你的Python代码段 b.把相关功能的代码写到一个模块里面能让你的代码更好用,更易懂 c.模块能定义函数.类和变量,模块里也能包含可执行的代码 注意点: ①在进行模块导入的时候,会将导入的模块从上往下执行一遍 ②模块导入时,同级目录导入,Pycharm有可能识

python学习笔记(模块、包、标准库)

模块 前面有简单介绍如何使用import从外部模块获取函数并且为自己的程序所用: >>> import math>>> math.sin(0)0.0>>> 模块是程序 任何python程序都可以作为模块导入.假设写如下程序,并且将它保存为以F:\python\myDemo\hello.py print 'hello,world' 下面通过python解释器调用: >>> import sys>>> sys.path.

python之路---25 模块和包

一.模块 1.导入方式 自己创建的模块名称 切不可和 内置模块的一样 ①  import  模块 ②  import 模块 as  名      设置在此空间的名称 ③  from 模块 import  功能 ④  from  模块  import  *          引入所有的功能 __all__=[a,b,c]       调用时只调用[  ]中的功能 ⑤ 一次引入多个模块的顺序 2.导入模块的过程 3.if __name__ == '__main__': 测试模块时使用的语句块 调用此

导入模块 和 包

一 模块 模块一共三种: python标准库    第三方模块    应用程序自定义模块  在cmd命令终端,查看命令os 来自第三方    time模块来自第三方 模块两种执行方式: 1 用于启动执行 2 用于被调用执行 key:import module: 将执行文件(module)的目录路径插入到sys.path的第一个位置 import的两个过程: 修改调用模块的名字:import logging as log from 模块 import 变量名from modname import

第一篇:python的模块与包

模块的简介 模块就是一组功能的集合体,我们的程序可以导入模块来复用模块里的功能.每一个 Python 脚本.py文件都可以被当成是一个模块.模块以磁盘文件的形式存在.当一个模块变得过大,并且驱动了太多功能的话,就应该考虑拆一些代码出来另外建一个模块.模块里的代码可以是一段直接执行的脚本,也可以是一堆类似库函数的代码,从而可以被别的模块导 入(import)调用.模块可以包含直接运行的代码块.类定义. 函数定义或这几者的组合. 模块分类:Python标准库模块.Python第三方模块.应用程序自定