Python 【模块】
A 什么是模块
最高级别的程序组织单元(模块什么都能封装)
模块中,我们不但可以直接存放变量,还能存放函数,还能存放类
定义变量需要用赋值语句,
封装函数需要用def语句,
封装类需要用class语句,
但封装模块不需要任何语句(每一份单独的Python代码文件(后缀名是.py的文件)就是一个单独的模块)
——————————————————————————————————————————————
B 封装模块的目的
为了把程序代码和数据存放起来以便再次利用
使用模块主要有两种方式,
一种是自己建立模块并使用,另外一种是使用他人共享的模块
——————————————————————————————————————————————
C 模块相关的常用语句主要有3个
C1 import 语句
目的
并不是运行模块中的执行语句,而是为了利用模块中已经封装好的变量、函数、类
导入模块
要使用模块中的变量、函数、类,需要在使用时加上 模块. 的格式
# 这是主程序main.py
import test # 导入test模块
print(test.a) # 使用“模块.变量”调用模块中的变量
test.hi() # 使用“模块.函数()”调用模块中的函数
A = test.Go2() # 使用“变量 = 模块.类()”实例化模块中的类
print(A.a) # 实例化后,不再需要“模块.”
A.do2() # 实例化后,不再需要“模块.”
——————————————————————————————————
# 【文件:story.py】 sentence = '从前有座山,' def mountain():
print('山里有座庙,') class Temple:
sentence = '庙里有个老和尚,'
def reading(self):
print('在讲一个长长的故事。') # 【文件:main.py】 import story for i in range(10):
print(story.sentence)
story.mountain()
A = story.Temple()
print(A.sentence)
A.reading()
print()
C1.1 import…as…
import story as s for i in range(10):
print(s.sentence)
s.mountain()
A = s.Temple()
print(A.sentence)
A.reading()
print()
C1.2 同时导入多个模块时,可以用逗号隔开。
比如import a,b,c
同时导入“a.py,b.py,c.py”三个文件
########################################################################
C2 from … import … 语句
从模块中导入一个指定的部分到当前模块
# 【文件:test.py】
def hi():
print('函数“hi”已经运行!') # 【文件:main.py】
from test import hi # 从模块test中导入函数“hi”
hi() # 使用函数“hi”时无需加上“模块.” 前缀
C2.1同时导入多个指定内容,也可以用逗号隔开
from xx模块 import a,b,c
#################注 意 事 项 ##################################
对于from … import …语句要注意的是,没有被写在import后面的内容,将不会被导入
指定所有内容直接使用时,可以写成【from xx模块 import *】的形式,*代表“模块中所有的变量、函数、类”
一般不要直接使用【from xx模块 import *】,因为块.xx的调用形式能通过阅读代码一眼看出是在调用模块中的变量/函数/方法,而去掉模块.后代码就不是那么直观了
###################################################################################################################################################
【test.py】
a = '我是模块中的变量a' def hi():
a = '我是函数里的变量a'
print('函数“hi”已经运行!') class Go2:
a = '我是类2中的变量a'
def do2(self):
print('函数“do2”已经运行!') 【main.py】
from test import a,hi,Go2 print(a) # 打印变量“a” hi() # 调用函数“hi” A = Go2() # 实例化“Go2”类 #print(Go2.a)
print(A.a) # 打印实例属性“a”
A.do2() # 调用实例方法“do2” 我是模块中的变量a
函数“hi”已经运行!
我是类2中的变量a
函数“do2”已经运行!
C3 if __name__ == '__main__'
“程序的入口”
一大堆py文件组成一个程序的时候,为了【指明】某个py文件是程序的运行入口
# 【文件:xx.py】
代码块 ①……
if __name__ == '__main__':
代码块 ②……
#当xx.py文件被直接运行时,代码块②将被运行”,
#xx.py文件作为模块是被其他程序导入时,代码块②不被运行。
##########################################################################
使用他人的模块
下载安装第三方编写的模块的方式
#需要预装python解释器和pip
Windows用户输入pip install + 模块名;
苹果电脑输入:pip3 install + 模块名。
Python的内置模块
内置模块是用Python语言编写的话,就能找到py文件
>>> import random
>>> random.__file__ #查询内置模块地址
'/usr/local/lib/python3.6/random.py'
如何自学模块
阅读官方文档
直接百度搜索
使用案例做成笔记(函数和类方法有什么作用)
dir()函数查看一个模块,看看它里面有什么变量、函数、类、类方法
import random # 调用random模块
print(dir(random)) #dir(random)
Python 【模块】的更多相关文章
- 使用C/C++写Python模块
最近看开源项目时学习了一下用C/C++写python模块,顺便把学习进行一下总结,废话少说直接开始: 环境:windows.python2.78.VS2010或MingW 1 创建VC工程 (1) 打 ...
- Python模块之configpraser
Python模块之configpraser 一. configpraser简介 用于处理特定格式的文件,其本质还是利用open来操作文件. 配置文件的格式: 使用"[]"内包含 ...
- Python模块之"prettytable"
Python模块之"prettytable" 摘要: Python通过prettytable模块可以将输出内容如表格方式整齐的输出.(对于用Python操作数据库会经常用到) 1. ...
- python 学习第五天,python模块
一,Python的模块导入 1,在写python的模块导入之前,先来讲一些Python中的概念性的问题 (1)模块:用来从逻辑上组织Python代码(变量,函数,类,逻辑:实现一个功能),本质是.py ...
- windows下安装python模块
如何在windows下安装python模块 1. 官网下载安装包,比如(pip : https://pypi.python.org/pypi/pip#downloads) pip-9.0.1.tar. ...
- 安装第三方Python模块,增加InfoPi的健壮性
这3个第三方Python模块是可选的,不安装的话InfoPi也可以运行. 但是如果安装了,会增加InfoPi的健壮性. 目录 1.cchardet 自动检测文本编码 2.lxml 用于解析 ...
- Python基础篇【第5篇】: Python模块基础(一)
模块 简介 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就 ...
- python 模块加载
python 模块加载 本文主要介绍python模块加载的过程. module的组成 所有的module都是由对象和对象之间的关系组成. type和object python中所有的东西都是对象,分为 ...
- pycharm安装python模块
这个工具真的好好,真的很喜欢,它很方便,很漂亮,各种好 pycharm安装python模块:file-setting-搜索project inte OK
- Python模块常用的几种安装方式
Python模块安装方法 一.方法1: 单文件模块直接把文件拷贝到 $python_dir/Lib 二.方法2: 多文件模块,带setup.py 下载模块包,进行解压,进入模块文件夹,执行:pytho ...
随机推荐
- [luogu P1527]矩阵乘法(矩形k小)
传送门 Description 给你一个N*N的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第K小数. Solution 整体二分 练习一波... 就是一堆询问放在一起二分 另外的,第一次发现原来矩 ...
- CF1174D Ehab and the Expected XOR Problem(二进制)
做法 求出答案序列的异或前缀和\(sum_i\),\([l,r]\)子段异或和可表示为\(sum_r\bigoplus sum_{l-1}\) 故转换问题为,填\(sum\)数组,数组内的元素不为\( ...
- linux 的real time 、user time、 sys time
<APUE>上提到了三个时间Real time, User time和Sys time.这三者是什么关系呢?在使用time(1)命令的时候,为什么real time < user t ...
- Kafka 最新版配置
当前基于kafaka最新版 kafka_2.12-2.2.1.tgz 进行配置 . 官网地址:http://kafka.apache.org/intro kafka的一些基础知识 参考:http:// ...
- poj2456
Aggressive cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 24979 Accepted: 11594 ...
- 治理Go模块 服务治理 中台业务 Golang的net.Conn接口,double close
小结: 1.中台业务 前台业务 快车.专车.顺风车,在滴滴这些业务线叫做前台服务,他们有一些共同的特性,都有司机信息,订单的状态,收银,账号等等这些业务逻辑,我们会把专门的业务逻辑集合起来,形成专职的 ...
- spring could 微服务 跨域问题(CORS )
问题发现 正常情况下,跨域是这样的:1. 微服务配置跨域+zuul不配置=有跨域问题2. 微服务配置+zuul配置=有跨域问题3. 微服务不配置+zuul不配置=有跨域问题4. 微服务不配置+zuul ...
- LC 456. 132 Pattern
Given a sequence of n integers a1, a2, ..., an, a 132 pattern is a subsequence ai, aj, ak such that ...
- java设置北京时间的时区
java设置北京时间的时区 解决方法: 设置北京时间的时区,消除时间差. TimeZone timeZone = TimeZone.getTimeZone("GMT+8"); ...
- SringCloud学习成长之路 八 消息总线
Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来.它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控.本文要讲述的是用Spring Cloud Bus实现通知微服务 ...