目录

模块化

在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模块化编程_Python模块化编程相关推荐

  1. python socket编程_Python Socket编程实现网络编程

    对于有经验的开发人员来说,掌握的编程语言应该是不少的.在这些编程语言中,网络编程的应用时必不可少的.其中Python也是这样的编程语言.我们今天将会在这里为大家详细介绍一下Python Socket编 ...

  2. 理解python并发编程_Python并发编程很简单

    上次已经和大家探讨了关于进程和线程的区别和联系相关的东东,今天呢,咱们再次回到 好啦,废话少说,咱们就开始吧! 首先说一下哦,_thread和threading哦,到这可能有朋友会问了,这两个有什么区 ...

  3. python 网络编程_Python网络编程(六)

    回顾 在<Python进阶记录之网络编程(五)>中,我们介绍了如何利用TCP服务端和客户端实现一个简单的点对点聊天,区别基于TCP协议和UDP协议的不同之处.今天我们讲一下如何利用多进程和 ...

  4. python udp通信_Python网络编程(三)

    回顾 在<Python进阶记录之网络编程(二)>中,我们介绍了UDP端口号的基本概念和作用以及Python中UDP服务端的端口绑定和简单创建.今天我们利用UDP server和UDP cl ...

  5. python 鱼骨图_python面向对象编程,鱼骨图分析法

    一.面向对象编程 ​ 面向过程编程,核心是编程二字,过程指的是解决问题的步骤,即先干什么.后干什么.再干什么.然后干什么-- 与工厂的工艺流程差不多,前后都有影响 优点:复杂的问题流程化,进而简单化, ...

  6. python的socket编程_Python Socket编程详细介绍

    在使用Python做socket编程时,由于需要使用阻塞(默认)的方式来读取数据流,此时对于数据的结束每次都需要自己处理,太麻烦.并且网上也没找到太好的封装,所以就自己写了个简单的封装. 封装思路 1 ...

  7. python事件驱动编程_Python事件驱动编程

    事件驱动的编程侧重于事件.最终,程序的流程取决于事件.到目前为止,我们处理顺序或并行执行模型,但具有事件驱动编程概念的模型称为异步模型.事件驱动的编程取决于始终侦听新传入事件的事件循环.事件驱动编程的 ...

  8. python网络编程案例_Python 网络编程_python网络编程基础_python高级编程

    Python 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的 ...

  9. python send 案例_python socket编程入门(编写server实例)+send 与sendall的区别与使用方法...

    python 编写server的步骤: 1. 第一步是创建socket对象.调用socket构造函数.如: socket = socket.socket( family, type ) family参 ...

最新文章

  1. mysql 8.0配置主从同步_MySQL8.0.19开启GTID主从同步CentOS8
  2. 一个简单的C++程序,回顾基本语法
  3. 最大整数扩展欧几里得
  4. 产品经理经验谈:从产品经理、用户、产品的角度重新认知产品运营
  5. Hyperledger fabric 1.0Beta网络组成及构建流程
  6. C 的16个大坑,你能躲过几个?
  7. Nginx 配置实现web解析php代码 过程记录
  8. Codeforces Round #313 (Div. 1) C. Gerald and Giant Chess DP
  9. jpa onetoone_java – JPA,Hibernate:仅使用外键的OneToOne映...
  10. centos7安装rabbitmq_rabbitmq v3.7.16安装部署文档
  11. 为什么SSD目标检测算法对小目标检测的效果不好
  12. 电脑右键的新建怎么没有了
  13. linux 查看文件哈希码,计算文件哈希值
  14. 基于微信小程序的游泳馆管理系统设计与实现-计算机毕业设计源码+LW文档
  15. 忍者必须死代码 免费
  16. GBase数据库——常用命令
  17. 教学常用计算机软件包括,计算机软件包括( )。
  18. FAT32文件系统(一)
  19. FLV科普2 FLV相关工具FlvParse
  20. 华南x99-f8黑苹果免驱网卡Wi-Fi正常蓝牙无法使用解决方法

热门文章

  1. java 多线程学习
  2. 关于用turbo c 编译出现的 Declaration syntax error 错误 (未解决)
  3. Linux下文件内容查阅命令
  4. (转)找工作是一种必须的生活阅历
  5. Communicator可以多点同时Logon
  6. JavaScript基本数据类型讲解
  7. Spring高级之注解@Import注解、ImportSelector、ImportBeanDefinitionRegistrar详解(超详细)
  8. 66Linux主机名和hosts67网络配置小结
  9. Linux创建sqlite数据库文件,SQLite数据库的创建与附加
  10. 开始位置 环状图_上海这个地方新建两所中小学!建筑效果图、出入口、学校位置等信息公布...