python模块化编程_Python模块化编程
目录
模块化
在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模块化编程相关推荐
- python socket编程_Python Socket编程实现网络编程
对于有经验的开发人员来说,掌握的编程语言应该是不少的.在这些编程语言中,网络编程的应用时必不可少的.其中Python也是这样的编程语言.我们今天将会在这里为大家详细介绍一下Python Socket编 ...
- 理解python并发编程_Python并发编程很简单
上次已经和大家探讨了关于进程和线程的区别和联系相关的东东,今天呢,咱们再次回到 好啦,废话少说,咱们就开始吧! 首先说一下哦,_thread和threading哦,到这可能有朋友会问了,这两个有什么区 ...
- python 网络编程_Python网络编程(六)
回顾 在<Python进阶记录之网络编程(五)>中,我们介绍了如何利用TCP服务端和客户端实现一个简单的点对点聊天,区别基于TCP协议和UDP协议的不同之处.今天我们讲一下如何利用多进程和 ...
- python udp通信_Python网络编程(三)
回顾 在<Python进阶记录之网络编程(二)>中,我们介绍了UDP端口号的基本概念和作用以及Python中UDP服务端的端口绑定和简单创建.今天我们利用UDP server和UDP cl ...
- python 鱼骨图_python面向对象编程,鱼骨图分析法
一.面向对象编程 面向过程编程,核心是编程二字,过程指的是解决问题的步骤,即先干什么.后干什么.再干什么.然后干什么-- 与工厂的工艺流程差不多,前后都有影响 优点:复杂的问题流程化,进而简单化, ...
- python的socket编程_Python Socket编程详细介绍
在使用Python做socket编程时,由于需要使用阻塞(默认)的方式来读取数据流,此时对于数据的结束每次都需要自己处理,太麻烦.并且网上也没找到太好的封装,所以就自己写了个简单的封装. 封装思路 1 ...
- python事件驱动编程_Python事件驱动编程
事件驱动的编程侧重于事件.最终,程序的流程取决于事件.到目前为止,我们处理顺序或并行执行模型,但具有事件驱动编程概念的模型称为异步模型.事件驱动的编程取决于始终侦听新传入事件的事件循环.事件驱动编程的 ...
- python网络编程案例_Python 网络编程_python网络编程基础_python高级编程
Python 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的 ...
- python send 案例_python socket编程入门(编写server实例)+send 与sendall的区别与使用方法...
python 编写server的步骤: 1. 第一步是创建socket对象.调用socket构造函数.如: socket = socket.socket( family, type ) family参 ...
最新文章
- mysql 8.0配置主从同步_MySQL8.0.19开启GTID主从同步CentOS8
- 一个简单的C++程序,回顾基本语法
- 最大整数扩展欧几里得
- 产品经理经验谈:从产品经理、用户、产品的角度重新认知产品运营
- Hyperledger fabric 1.0Beta网络组成及构建流程
- C 的16个大坑,你能躲过几个?
- Nginx 配置实现web解析php代码 过程记录
- Codeforces Round #313 (Div. 1) C. Gerald and Giant Chess DP
- jpa onetoone_java – JPA,Hibernate:仅使用外键的OneToOne映...
- centos7安装rabbitmq_rabbitmq v3.7.16安装部署文档
- 为什么SSD目标检测算法对小目标检测的效果不好
- 电脑右键的新建怎么没有了
- linux 查看文件哈希码,计算文件哈希值
- 基于微信小程序的游泳馆管理系统设计与实现-计算机毕业设计源码+LW文档
- 忍者必须死代码 免费
- GBase数据库——常用命令
- 教学常用计算机软件包括,计算机软件包括( )。
- FAT32文件系统(一)
- FLV科普2 FLV相关工具FlvParse
- 华南x99-f8黑苹果免驱网卡Wi-Fi正常蓝牙无法使用解决方法
热门文章
- java 多线程学习
- 关于用turbo c 编译出现的 Declaration syntax error 错误 (未解决)
- Linux下文件内容查阅命令
- (转)找工作是一种必须的生活阅历
- Communicator可以多点同时Logon
- JavaScript基本数据类型讲解
- Spring高级之注解@Import注解、ImportSelector、ImportBeanDefinitionRegistrar详解(超详细)
- 66Linux主机名和hosts67网络配置小结
- Linux创建sqlite数据库文件,SQLite数据库的创建与附加
- 开始位置 环状图_上海这个地方新建两所中小学!建筑效果图、出入口、学校位置等信息公布...