Python之浅谈模块
模块的四种形式
什么是模块
模块就是一个py文件, 这个py文件有一大堆函数
- 自定义模块,common.py就叫做common模块
- 第三方模块: 需要自己安装 13万个第三方库 ,无所不能,写库(弄得更简单)
- 内置模块: python解释器自带的,不需要安装
- 包--> 含有__inti__.py的文件夹,一种特殊的模块(解决了一个问题)
import和from......import
import首次导入模块发生了3件事:
以模块为准创造一个模块的名称空间
执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间
在当前执行文件中拿到一个模块名
from...import...首次导入模块发生了3件事:
1.以模块为准创造一个模块的名称空间
2.执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间
3.在当前执行文件的名称空间中拿到一个名字,该名字直接指向模块中的某一个名字,意味着可以不用加任何前缀而直接使用
循环导入
# m1.py
print('from m1.py')
from m2 import x
y = 'm1'
#在运行m1时会去m2中找x但在第二行时又会去m1中找y,这样就会造成死循环,并报错
# m2.py
print('from m2.py')
from m1 import y
x = 'm2'
#在运行m2时会去m1中找y但在第二行时又会去m2中找x,这样就会造成死循环,并报错
#解决方法
# m1.py
print('from m1.py')
def func1():
from m2 import x
print(x)
y = 'm1'
# m2.py
print('from m2.py')
def func1():
from m1 import y
print(y)
x = 'm2'
模块的搜索路径
模块其实就是一个文件,如果要执行文件,首先就需要找到模块的路径(某个文件夹)。如果模块的文件路径和执行文件不在同一个文件目录下,我们就需要指定模块的路径。
模块的搜索路径指的就是在导入模块时需要检索的文件夹。
导入模块时查找模块的顺序是:
- 先从内存中已经导入的模块中寻找
- 内置的模块
- 环境变量sys.path中找
Python文件的两种用途
python文件总共有两种用途,一种是执行文件;另一种是被当做模块导入。
执行文件: 当前运行的文件就叫做执行文件
模块文件: 运行05 Python文件的两种用途.py文件, m1就是模块文件
执行文件和模块文件是相对的.
random模块
import random
# 最常用的方法
print(random.random()) # 0-1的随机数
print(random.randint(0,100)) # 0-100的整数
lt = [1,2,3,4,5,]
random.shuffle(lt) # 打乱容器类元素 --> 列表和字典
print(lt)
# 了解
print(random.randrange(1,10)) # 1,9之内的整数
print(random.uniform(1,3)) # 1-3的小数
print(random.choice([1,2,3,'a','b'])) # 选一个
print(random.sample([1,2,3,'a','b'],2)) # 选2个
Python之浅谈模块的更多相关文章
- Python 基于python+mysql浅谈redis缓存设计与数据库关联数据处理
基于python+mysql浅谈redis缓存设计与数据库关联数据处理 by:授客 QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3 ...
- Python实例浅谈之三Python与C/C++相互调用
一.问题 Python模块和C/C++的动态库间相互调用在实际的应用中会有所涉及,在此作一总结. 二.Python调用C/C++ 1.Python调用C动态链接库 Python调用C库比较简单,不经过 ...
- python itertool 浅谈迭代工具
1.概述 Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数. 首先,我们看看itertools提供的几个“无限”迭代器: import itertools natuals ...
- 【python】浅谈包
python中的包可以理解为模块的集合.每个包也既可以为单包也可以有多个小包组成. Python中的package定义很简单,其层次结构与目录的层次结构相同,但是每个package必须包含一个__in ...
- 【python】浅谈encode和decode
对于encode和decode,笔者也是根据自己的理解,有不对的地方还请多多指点. 编码的理解: 1.编码:utf-8,utf-16,gbk,gb2312,gb18030等,编码为了便于理解,可以把它 ...
- [ABP]浅谈模块系统与 ABP 框架初始化
在 ABP 框架当中所有库以及项目都是以模块的形式存在,所有模块都是继承自AbpModule 这个抽象基类,每个模块都拥有四个生命周期.分别是: PreInitialze(); Initialize( ...
- 浅谈模块系统与 ABP 框架初始化
在 ABP 框架当中所有库以及项目都是以模块的形式存在,所有模块都是继承自AbpModule 这个抽象基类,每个模块都拥有四个生命周期.分别是: PreInitialze(); Initialize( ...
- Python实例浅谈之五Python守护进程和脚本单例运行
一.简介 守护进程最重要的特性是后台运行:它必须与其运行前的环境隔离开来,这些环境包括未关闭的文件描述符.控制终端.会话和进程组.工作目录以及文件创建掩码等:它可以在系统启动时从启动脚本/etc/rc ...
- Python之浅谈多态和封装
目录 组合 什么是组合 为什么使用组合 多态和多态性 多态 什么是多态? 多态性 好处 多态性 什么是多态性 封装 封装是什么意思? 隐藏 如何用代码实现隐藏 python 实际上是可以访问隐藏属性的 ...
随机推荐
- 核心记账业务可用jdk7的PriorityBlockingQueue优先阻塞队列结合乐观锁实现
-- 1.优先级阻塞队列 当前核心记账业务是悲观锁实现,但考虑到高并发和死锁的问题,可以用PriorityBlockingQueue优先阻塞队列结合乐观锁实现,对于并发时出现锁无法update时可以重 ...
- Java实现 LeetCode 749 隔离病毒(DFS嵌套)
749. 隔离病毒 病毒扩散得很快,现在你的任务是尽可能地通过安装防火墙来隔离病毒. 假设世界由二维矩阵组成,0 表示该区域未感染病毒,而 1 表示该区域已感染病毒.可以在任意 2 个四方向相邻单元之 ...
- Java实现打印回型嵌套
*********** * * * ******* * * * * * * * *** * * * * * * * * * * *** * * * * * * * ******* * * * **** ...
- PAT 反转链表
给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转.例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为 3→2→1→6→5→4:如果 K 为 4,则输出应该 ...
- HDFS ha 格式化报错:a shared edits dir must not be specified if HA is not enabled.
错误内容: Formatting using clusterid: CID-19921335-620f-4e72-a056-899702613a6b2019-01-12 07:28:46,986 IN ...
- Controller是什么?
控制器Controller 控制器复杂提供访问应用程序的行为,通常通过接口定义或注解定义两种方法实现. 控制器负责解析用户的请求并将其转换为一个模型. 在Spring MVC中一个控制器类可以包含多个 ...
- 关于Api的那些事儿!
工作中一直在写Api数据接口,但大部分的Api都存在这样的问题 1.接口请求的地址和参数暴露 2.重要接口返回数据明文暴露 3.APP登录态请求的数据完全性问题 4.代码层的数据完全性问题(从代码层有 ...
- free【分层图最短路】
free 传送门 来源: 牛客网 题目描述 Your are given an undirect connected graph.Every edge has a cost to pass.You ...
- 0.1---selenium+java自动化测试进阶01---PageObject设计模式
一.PageObject设计模式 1.简介 PageObject设计模式,又称页面对象模式,是使用Selenium的广大同行最为公认的一种设计模式.在设计测试时,把元素和方法按照页面抽象出来,分离 ...
- WeChair项目Beta冲刺(1/10)
团队项目进行情况 1.昨日进展 Beta冲刺第一天 前期进展: 对代码进行优化,完成上阶段冲刺未完成的实名认证上传图片的功能,解决解密存在部分失败的bug问题 2.今日安排 前端:设计扫码占座功 ...