目录

模块化

自定义模块

模块的内置属性

导入模块

安装第三方模块

查看模块的属性和方法


模块化

在Python中,一个.py文件就称之为一个模块(Module),为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。举个例子,一个abc.py的文件就是一个名字叫 abc 的模块,一个 xyz.py 的文件就是一个名字叫xyz的模块.现在,假设我们的abc和xyz这两个模块名字与其他模块冲突了,于是我们可以通过包来组织模块,避免冲突。选择一个顶层包名,比如mycompany,按照如下目录存放:

mycompany

├─ __init__.py

├─ abc.py

└─ xyz.py

引入了包以后,只要顶层的包名不与别人冲突,那所有模块都不会与别人冲突。现在,abc.py 模块的名字就变成了mycompany.abc,类似的,xyz.py的模块名变成了mycompany.xyz。

请注意,每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。__init__.py可以是空文件,也可以有Python代码,因为 __init__.py本身就是一个模块,而它的模块名就是mycompany

自定义模块

我们可以自己写一个模块,但是注意模块命名的时候要注意以下几点:

  • 模块名要遵循Python变量命名规范,不要使用中文、特殊字符
  • 模块名不要和系统模块名冲突,最好先查看系统是否已存在该模块,检查方法是在Python交互环境执行 import abc,若成功则说明系统存在此模块

我们现在自己写了一个模块,circles.py

pi=3.14159
def area(radius):
return pi*(radius**2)
def circumference(radius):
return 2*pi*radius
def sphereSurface(radius):
return 4.0*area(radius)
def sphereVolume(redius):
return (4.0/3.0)*pi*(radius**3) if __name__=='__main__': ##测试运行代码
print(area(3))

这里我们要提到 __name__ 属性。每个模块都有 __name__ 属性。如果我们是在本模块运行的话,__name__属性的值为__main__,如果是其他模块导入该模块的话,该模块的__name__属性值为包名。

所以我们这里判断了__name__=='__main__',如果相等的话,就测试运行代码。当其他模块导入我们模块的话,这里面的测试代码不会执行

模块的内置属性

  • __doc__:模块中用于描述的文档字符串
  • __name__:模块名
  • __file__:模块保存的路径
"""
Created on Wed Oct 31 19:46:54 2018
@author: 小谢
"""
print(__doc__)
print(__file__)
print(__name__)
###############
Created on Wed Oct 31 19:46:54 2018
@author: 小谢 G:/Python3/untitled26.py
__main__

导入模块

将如我们现在要在其他模块导入上面我们自己写的模块可的话,可以有下面几种方法。我们得把我们的包放在python能找到的环境变量的路径下面。然后就可以导入了

import circles    这样我们用这个模块里面的函数的话,就得这样: circles.area()、circles.circumference()、circles.sphereVolume()

from circles import area    这样我们要用area方法的话就直接使用:area(),但是其他几个方法不能用

form circles import area,circumference   这样是导入多个方法

form circles import *   这样是导入这个模块内的所有方法

给模块设置别名
import circles as xie 那么我们在调用的时候就可以直接使用这个别名了: xie.area()

安装第三方模块

我们可以直接安装 anaconda,这个程序里面默认安装了很多常用的python包,如果还是没有安装的话,我们可以打开CMD命令窗口:pip  install   package

查看模块的属性和方法

dir(模块名)

import circles
print(dir(circles))
################
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'area', 'circumference', 'pi', 'sphereSurface', 'sphereVolume']

Python模块化编程的更多相关文章

  1. (一)Python模块化编程简介

    1 引言 众所周知,模块化编程具备很多优点,尤其在复杂项目上体现更为明显.Python模块化编程有助于开发者统筹兼顾和分工协作,并提升代码灵活性和可维护性,是编程开发者不可或缺的一项重要工具. 2 P ...

  2. Python模块化编程与装饰器

    Python的模块化编程 我们首先以一个例子来介绍模块化编程的应用场景,有这样一个名为requirements.py的python3文件,其中两个函数的作用是分别以不同的顺序来打印一个字符串: # r ...

  3. 【python游戏编程之旅】第七篇---pygame中的冲突检测技术

    本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 上一个博客我们一起学习了pygame中的Sprite模块和如何加载动画:http://www.cnblogs ...

  4. 模块化编程AMD&CommonJS

    为什么要模块化编程 如果JS也可以像类似python,Java使用import,引入我们想要的模块,想要什么模块,就加载什么模块,可以给前端编程带来更多的便捷,结构更加清晰明了.但是,这样做有一个前提 ...

  5. 15_Python模块化编程_Python编程之路

    之前跟大家讲的是一些python的数据基础,从这篇文章开始,我们开始正式学习python的模块化编程 下面我们解释一下什么叫做模块 之前已经讲过怎么去定义一个方法,如果你是用python交互器(自带交 ...

  6. js模块化编程之彻底弄懂CommonJS和AMD/CMD!

    先回答我:为什么模块很重要? 答:因为有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块.但是,这样做有一个前提,那就是大家必须以同样的方式编写模块,否则你有你的写法,我有我的写 ...

  7. python 函数式编程学习笔记

    函数基础 一个函数就是将一些语句集合在一起的部件,它们能够不止一次地在程序中运行.函数的主要作用: 最大化的代码重用和最小化代码冗余 流程的分解 一般地,函数讲的流程是:告诉你怎样去做某事,而不是让你 ...

  8. [转]js模块化编程之彻底弄懂CommonJS和AMD/CMD!

    原文: https://www.cnblogs.com/chenguangliang/p/5856701.html ------------------------------------------ ...

  9. 爬虫逆向基础,理解 JavaScript 模块化编程 webpack

    关注微信公众号:K哥爬虫,QQ交流群:808574309,持续分享爬虫进阶.JS/安卓逆向等技术干货! 简介 在分析一些站点的 JavaScript 代码时,比较简单的代码,函数通常都是一个一个的,例 ...

随机推荐

  1. pytorch(06)autograd与逻辑回归

    autograd与逻辑回归 自动求导系统中两个常用的方法: torch.autograd.backward and torch.autograd.grad 演示理解一阶导数.二阶导数的求导过程 理解自 ...

  2. mysql创建读写账号及服务相关优化配置

    grant select on xoms_prod.* to 'kzcf'@'%' identified by '123456'; 赋权多权限就   grant select,update,delet ...

  3. redhat安装python3.7

    下载并解压: 1 wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz 2 tar -xzvf Python-3.7.2.tgz ...

  4. C# 获取网页信息

    获取网页源码 ///通过HttpWebResponse public string GetUrlHtml(string url) { string strHtml = string.Empty; Ht ...

  5. 攻防世界 reverse 666

    666  2019_UNCTF main int __cdecl main(int argc, const char **argv, const char **envp) { char myen; / ...

  6. C语言const是如何保证变量不被修改的?

    这小段文章要理清楚的是,在C语言中,$const$是如何保证变量不被修改的? 我们可以想到两种方式: 第一种,由编译器来阻止修改$const$变量的语句,让这种程序不能通过编译: 第二种,由操作系统来 ...

  7. CVE-2020-1472 Zerologon

    CVE-2020-1472 Zerologon 漏洞简介 CVE-2020-1472是继MS17010之后一个比较好用的内网提权漏洞,影响Windows Server 2008R 2至Windows ...

  8. 痞子衡嵌入式:从头开始认识i.MXRT启动头FDCB里的lookupTable

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT启动头FDCB里的lookupTable. 一个MCU内部通常有很多外设模块,这些外设模块是各MCU厂商做差异化产品的本质, ...

  9. 解决“用PicGo-2.3.0-beta5 + GitHub做博客图床,github仓库图片文件不显示”的问题记录(备忘)

    解决"用PicGo-2.3.0-beta5 + GitHub做博客图床,github仓库图片文件不显示"的问题记录(备忘) 历时几个小时百度,终于靠自己理解解决了GitHub仓库图 ...

  10. [Fundamental of Power Electronics]-PART II-9. 控制器设计-9.5 控制器的设计

    9.5 控制器设计 现在让我们来考虑如何设计控制器系统,来满足有关抑制扰动,瞬态响应以及稳定性的规范或者说设计目标.典型的直流控制器设计可以用以下规范定义: 1.负载电流变化对输出电压调节的影响.当负 ...