python是模块化编程吗_python模块化编程

模块化编程的基本概念(什么是模块化编程?)

一个模块就是一个源文件(.py),一个有用的模块是一系列可复用函数和类的集合,模块化编程的本质就是使用模块来解决问题、提高代码复用率。

模块的设计和实现(怎么构建一个合格的模块?)

引入模块的程序被称为客户端程序,客户端程序要引用模块的函数和类、需要遵循的契约被称为应用程序接口(API Application Programming Interface),API描述了函数的功能以及该如何引用它。

模块设计应当遵循以下原则:

应当先设计API,再考虑实现。(需求驱动)

应当控制模块设计的复杂度。(就像数学一样,只要极少的基本定理就可以证明一道复杂的证明题,这是理工科追求的简洁美)

模块中应当不包括全局代码。一个模块的名称可以通过变量name来获取,当模块单独运行时name为main,故可以借助这一点把测试代码写进模块,以此保证只有模块单独运行时才能运行它,模块的功能是为客户端提供可复用的代码,除此之外不应当做任何操作。

应当编写文档提供帮助信息。在函数的第一个逻辑行的字符串称为函数的文档字符串。函数的文档字符串用于提供有关函数的帮助信息。通常而言,文档字符串的第一行是简要描述,以大写字母开头;第二行是空行,其他行是详细描述。一般而言,有三种方法可以访问模块的文档字符串:

1) help(函数)

2) 函数名.doc

3) 第三方自动化工具抽取形成帮助文档

应当通过私有函数实现不被调用的模块函数,对外部隐藏实现细节。

模块的导入和使用(客户端程序如何引入模块?)

 可以使用import语句导入模块

Import math,sys

 导入模块后可以使用全限定名称访问模块中的对象

模块名.对象名

 可以使用 from 模块名 import 对象1,对象2…(*)导入模块的部分(全部)成员。

 Imp模块中的reload函数可以重新加载已经导入的模块。

 可以使用import()动态导入模块

包(模块是怎么组织的?)

 包是模块的上层结构,是一系列模块的集合。

 先在指定的目录中创建一个目录,在目录中创建一个init.py,再添加模块,这样一个包就创建好了。

模块的导入顺序

当前目录(主程序所在的目录或启动交互式Python的目录)

PYTHONPATH中指定的目录

Python标准库目录

(sys.path属性返回一个路径列表,import时自动从该路径列表中搜索模块,如果没有,则程序报错。

模块中定义的成员,包括变量、函数和类,可以通过内置的函数dir()查询)

名称空间与名称查找顺序

一、 当代码中使用名称x时,Python解释器把x解释为对象名(对象、函数、变量等),并按如下名称空间顺序查找以x命名的对象:

(1)局部名称空间。当前函数或类的方法中定义的局部变量

(2)全局名称空间。当前的模块(.py文件)中定义的变量、函数或类

(3)内置名称空间。对每个模块都是全局的。作为最后的尝试,Python将假设x是内置函数或变量

二、 Python使用特殊变量name来标记一个模块是否是顶层模块:

(1)如果模块是作为一个正在运行的顶层模块、则其属性name设置为字符串main。

(2)如果模块被另一个模块(不管顶层模块或其它模块)导入,则其属性name设置模块的名称。

因此,在模块中编写仅当作为顶层模块运行时才执行的代码时,可以使用下列语句:

if name == "main":

#作为顶层模块运行时要执行的代码

三、 Python解释器是顶层模块。使用Python解释器进行交互式执行Python代码时,Python解释器是顶层模块,其中定义的名称是全局变量,属于全局名称空间

python文件搜索顺序

1.定义为一个包的目录 foo

2.foo.so, foomodule.so, foomodule.sl,或 foomodule.dll (已编译扩展)

3.foo.pyo (只在使用 -O 或 -OO 选项时)

4.foo.pyc

5.foo.py

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值