用模块来合理组织你的Python代码是简单又自然的方法。你应该建立一种统一且容易阅读的结构,并将它应用到每一个文件中去。下面就是一种非常合理的布局:

(1) 起始行(Unix)

(2) 模块文档

(3) 模块导入

(4) 变量定义

(5) 类定义

(6) 函数定义

(7) 主程序

下图是一个典型模块的内部结构图解。

(1) 起始行

通常只有在类Unix 环境下才使用起始行,有起始行就能够仅输入脚本名字来执行脚本,无需直接调用解释器。

(2)模块文档

简要介绍模块的功能及重要全局变量的含义,模块外可通过 module.__doc__ 访问这些内容。

(3)模块导入

导入当前模块的代码需要的所有模块;每个模块仅导入一次(当前模块被加载时);函数内部的模块导入代码不会被执行,除非该函数正在执行。

(4)变量定义

这里定义的变量为全局变量,本模块中的所有函数都可直接使用。从好的编程风格角度说,除非必须,否则就要尽量使用局部变量代替全局变量,如果坚持这样做,你的代码就不但容易维护,而且还可以提高性能并节省内存。

(5)类定义语句

所有的类都需要在这里定义。当模块被导入时class 语句会被执行, 类也就会被定义。类的文档变量是class.__doc__。

(6)函数定义语句

此处定义的函数可以通过module.function()在外部被访问到,当模块被导入时 def 语句会被执行,函数也就都会定义好,函数的文档变量是function.__doc__。

(7) 主程序

无论这个模块是被别的模块导入还是作为脚本直接执行,都会执行这部分代码。通常这里不会有太多功能性代码,而是根据执行的模式调用不同的函数。

推荐代码风格:主程序调用main()函数

主程序代码通常都和你前面看到的代码相似,检查 __name__ 变量的值然后再执行相应的调用。

主程序中的代码通常包括变量赋值, 类定义和函数定义,随后检查__name__来决定是否调用另一个函数(通常调用main()函数)来完成该模块的功能。

大部分的Python 模块都是用于导入调用的,直接运行模块应该调用该模块的回归测试代码。

python所有模块图解_Python模块结构和布局相关推荐

  1. python模块手册_python模块说明

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python模块说明:类似于函数式编程和面向过程编程,函数式编程则完成一个功能, ...

  2. python模块导入_Python模块及其导入

    一.模块 1.模块的定义: 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少, 很多编程语言都采用这种组织代码的方式.在Python中,一个.py文件 ...

  3. python怎么定义名称_Python模块的定义,模块的导入,__name__用法实例分析

    本文实例讲述了Python模块的定义,模块的导入,__name__用法.分享给大家供大家参考,具体如下: 相关内容: 什么是模块 模块的导入 模块的导入 自模块的导入 同级目录导入 不同级目录导入 目 ...

  4. python导入模块语句_python 模块导入详解

    本文不讨论 Python 的导入机制(底层实现细节),仅讨论模块与包,以及导入语句相关的概念.通常,导入模块都是使用如下语句: import...import... as ...from ... im ...

  5. python ascii函数二进制_python模块介绍- binascii:二进制和ASCII互转以及其他进制转换...

    20.1 binascii:二进制和ASCII互转 作用:二进制和ASCII互相转换. Python版本:1.5及以后版本 binascii模块包含很多在二进制和ASCII编码的二进制表示转换的方法. ...

  6. python模块使用_PYthon模块使用教程(最新).doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspPython PYthon模块使用教程(最新).doc63页 本 ...

  7. python自带模块连接数据库_Python模块Sqlite数据库模块

    Python模块Sqlite数据库模块简介 从Python2.5以后的版本开始引入SQLite,属于Python内置模块,不需要额外安装.Sqlite以小巧快捷著称.SQLite第一个Alpha版本诞 ...

  8. python模块讲解_python模块详解 | filecmp

    原博文 2020-04-30 14:33 − 简介: filecmp是python内置的一个模块,用于比较文件及文件夹的内容,它是一个轻量级的工具,使用非常简单 两个主要的方法: filecmp.cm ...

  9. python模块导入_Python模块导入详解

    定义 模块:用来从逻辑上组织Python代码(变量.函数.类.逻辑)去实现一个功能.本质就是.py结尾的Python文件. 包:用来从逻辑上组织模块的(可以放一堆模块在目录下).本质就是一个目录(必须 ...

最新文章

  1. mongodb存储二进制数据的二种方式——binary bson或gridfs
  2. java图片转成字符串_JAVA将图片(本地或者网络资源)转为Base64字符串,将base64字符串存储为本地图片...
  3. 【Linux】一步一步学Linux——ncat命令(159)
  4. 计算机文档vmware安装虚拟机,教你如何用VMware虚拟机安装系统.docx
  5. linux系统时间函数,Linux时间时区详解与常用时间函数
  6. 看了新闻,思科研发中心 没有成都的。。。
  7. 设置cookie,跨域取值
  8. Bailian4137 最小新整数【Ad Hoc】
  9. 【原型图设计工具】墨刀使用说明
  10. PDF怎么打印?为什么有时选择打印没有反应?
  11. Spring源码分析三:Bean标签解析之BeanDefinition
  12. mysql 1236错误_MySQL 1236错误解决方法_MySQL
  13. 利用吉洪若夫正则化及其西尔韦斯特方程来修复受损图像
  14. 烽火2640路由器命令行手册-14-桥接配置命令
  15. 干货知识:高清监控怎么选配交换机
  16. ICPC训练联盟2021寒假冬令营(5)_2021.01.22_笔记
  17. HIVE常用参数配置
  18. mysql执行语句出来全是问号_解决MySQL中文输出变成问号的问题
  19. python主函数调用格式_Python入门基础中怎么定义函数,函数调用,函数传递参数...
  20. A 0.18um CMOS SOC for a 100-m-Range 10-Frame/s 200x96 pixel time-of-flight Depth Sensor翻译

热门文章

  1. 裸眼3D将是未来移动端的显示的主要技术
  2. 人人都能学会的python编程教程14:高级特性1
  3. 线段树-离散化处理点
  4. SourceTree 教程文档(了解界面)
  5. postgresql数据库的数据导出
  6. spring中的事务配置
  7. mysql 连接url中useUnicode=truecharacterEncoding=UTF-8 的作用
  8. Linux下安装jdk1.6
  9. 黄聪:DEDECMS联动调用时提示“你设定了字段为联动类型,但系统中没找到与你定义的字段名相同的联动组名!”...
  10. 清理多个varnish服务器缓存的脚本