模块的四种形式

什么是模块

​ 模块就是一个py文件, 这个py文件有一大堆函数

  1. 自定义模块,common.py就叫做common模块
  2. 第三方模块: 需要自己安装 13万个第三方库 ,无所不能,写库(弄得更简单)
  3. 内置模块: python解释器自带的,不需要安装
  4. 包--> 含有__inti__.py的文件夹,一种特殊的模块(解决了一个问题)

import和from......import

import首次导入模块发生了3件事:

  1. 以模块为准创造一个模块的名称空间

  2. 执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间

  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'

模块的搜索路径

模块其实就是一个文件,如果要执行文件,首先就需要找到模块的路径(某个文件夹)。如果模块的文件路径和执行文件不在同一个文件目录下,我们就需要指定模块的路径。

模块的搜索路径指的就是在导入模块时需要检索的文件夹。

导入模块时查找模块的顺序是:

  1. 先从内存中已经导入的模块中寻找
  2. 内置的模块
  3. 环境变量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之浅谈模块的更多相关文章

  1. Python 基于python+mysql浅谈redis缓存设计与数据库关联数据处理

    基于python+mysql浅谈redis缓存设计与数据库关联数据处理 by:授客  QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3 ...

  2. Python实例浅谈之三Python与C/C++相互调用

    一.问题 Python模块和C/C++的动态库间相互调用在实际的应用中会有所涉及,在此作一总结. 二.Python调用C/C++ 1.Python调用C动态链接库 Python调用C库比较简单,不经过 ...

  3. python itertool 浅谈迭代工具

    1.概述 Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数. 首先,我们看看itertools提供的几个“无限”迭代器: import itertools natuals ...

  4. 【python】浅谈包

    python中的包可以理解为模块的集合.每个包也既可以为单包也可以有多个小包组成. Python中的package定义很简单,其层次结构与目录的层次结构相同,但是每个package必须包含一个__in ...

  5. 【python】浅谈encode和decode

    对于encode和decode,笔者也是根据自己的理解,有不对的地方还请多多指点. 编码的理解: 1.编码:utf-8,utf-16,gbk,gb2312,gb18030等,编码为了便于理解,可以把它 ...

  6. [ABP]浅谈模块系统与 ABP 框架初始化

    在 ABP 框架当中所有库以及项目都是以模块的形式存在,所有模块都是继承自AbpModule 这个抽象基类,每个模块都拥有四个生命周期.分别是: PreInitialze(); Initialize( ...

  7. 浅谈模块系统与 ABP 框架初始化

    在 ABP 框架当中所有库以及项目都是以模块的形式存在,所有模块都是继承自AbpModule 这个抽象基类,每个模块都拥有四个生命周期.分别是: PreInitialze(); Initialize( ...

  8. Python实例浅谈之五Python守护进程和脚本单例运行

    一.简介 守护进程最重要的特性是后台运行:它必须与其运行前的环境隔离开来,这些环境包括未关闭的文件描述符.控制终端.会话和进程组.工作目录以及文件创建掩码等:它可以在系统启动时从启动脚本/etc/rc ...

  9. Python之浅谈多态和封装

    目录 组合 什么是组合 为什么使用组合 多态和多态性 多态 什么是多态? 多态性 好处 多态性 什么是多态性 封装 封装是什么意思? 隐藏 如何用代码实现隐藏 python 实际上是可以访问隐藏属性的 ...

随机推荐

  1. Java实现 LeetCode 141 环形链表

    141. 环形链表 给定一个链表,判断链表中是否有环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos 是 -1,则在该链表中没有环. ...

  2. Java实现字符串转换成整数

    1 问题描述 输入一个由数字组成的字符串,请把它转换成整数并输出.例如,输入字符串"123",输出整数123. 请写出一个函数实现该功能,不能使用库函数. 2 解决方案 解答本问题 ...

  3. PAT 程序运行时间

    要获得一个 C 语言程序的运行时间,常用的方法是调用头文件 time.h,其中提供了 clock() 函数,可以捕捉从程序开始运行到 clock() 被调用时所耗费的时间.这个时间单位是 clock ...

  4. 看Python如何无缝转换Word和Excel

    word和excel是办公过程必不可少的两个文档类型,word多用于文字处理,比如备忘录.论文.书籍.报告.商业信函等,excel可以制作精美的图表,还可以计算.分析.记录数据.二者在功能达成上有重叠 ...

  5. MySQL死锁及解决方案

    一.MySQL锁类型 1. MySQL常用存储引擎的锁机制 MyISAM和MEMORY采用表级锁(table-level locking) BDB采用页面锁(page-level locking)或表 ...

  6. ESXI多网卡网络配置

    1.两台路由器接入不同网络: 2.一台4网口服务器,网口分别为:vmnic0.vmnic1.vmnic2.vmnic3 3.ESXI6.5服务器虚拟机系统 测试环境模拟: 路由1:192.168.0. ...

  7. MySQL查询优化利刃-EXPLAIN

    有一个 ? 遇到这样一个疑问:当where中In一个索引字段,那么在查询中还会使用到索引吗? SELECT * FROM table_name WHERE column_index in (expr) ...

  8. PBFT共识算法

    拜占庭将军问题 我们已知的共识算法,Paxos.Raft解决的都是非拜占庭问题,也就是可以容忍节点故障,消息丢失.延时.乱序等,但节点不能有恶意节点.但如何在有恶意节点存在的情况下达成共识呢?BFT共 ...

  9. SpringBoot爬坑系列

    1.日志篇 现象 由于日志配置采用原来SpringMVC项目中的log4j.properties 文件,日志采用springboot自带的jar包会出现打印不出日志的情况. 解决 引入原日志包 < ...

  10. springboot整合Mybatis(有xml)

    pom.xml <!-- mybatis 支持 SpringBoot --> <dependency> <groupId>org.mybatis.spring.bo ...