Python 入门之 模块

1、模块

(1)模块是什么?

​ 将一些常用的功能封装到一个文件中,那么这个存储着很多常用的功能的py文件,就是模块。 模块就是文件,存放一堆常用的函数。模块,就是一些常用功能的集合体。

(2)模块能干什么?

​ 文件化管理 , 提高了可读性 ,避免重复代码

​ 拿来就用(避免重复造轮子), Python中类库特别多

(3)模块的分类:

​ Python语言中,模块分为三类。

第一类:内置模块

​ 也叫做标准库。此类模块就是python解释器给你提供的,比如我们之前见过的time模块,os模块。标准库的模块非常多(200多个,每个模块又有很多功能),我们这几天就讲常用的十几种,后面课程中还会陆续的讲到。

第二类:第三方模块

​ 有人叫做第三方库。一些python大神写的非常好用的模块,必须通过pip install 指令安装的模块,比如BeautfulSoup, Django,等等。大概有6000多个。

第三类:自定义模块。

​ 我们自己在项目中定义的一些模块。

2、import 使用

​ import 翻译过来是一个导入的意思。

(1)import时会做三件事:

<1> 将所调用文件中所有代码读取到当前文件

<2> 在当前文件开辟空间

<3> 等待被调用

(2)import 导入同一个模块名时,只执行一次

import test # 导入  拿test工具箱
import test # 导入 拿test工具箱
import test # 导入 拿test工具箱 重复导入会直接引用内存中已经加载好的结果
def t1():
print("高级工程师") import test
test.t1()
test.t2()
print(test.tt) import test # 只能将整个工具箱拿来
a = test.t1
b = test.t2 a()
b() import test as t # 工具箱名字过长可以起别名
t.t1() import test # 导入模块不能加后缀名 (在pycharm中飘红不代表报错)

(3)as 支持 import 和 from 可以用来修改模块的名字

from test import t1 as t # 从test工具箱中将t1这个工具拿过来

def t1():
print("高级工程师")
t1()
t()

from 和 import 推荐使用from

(4)import 和 from 的区别:

<1> from只能执行导入的工具

<2> import 能够执行整个模块中所有的功能

<3> from容易将当前文件中定义的功能覆盖

<4> from比import灵活

<5> import 和 from 使用的都是相对路径

<6> import 只能导入当前文件夹下的模块

<7> import 后边不能加点操作

(5)模块的两种用法: if _ name _ == "_ main _"

<1> 当做模块被导入 import from

<2> 当做脚本被被执行

​ 只有py文件当作模块被导入时,字节码才会进行保留

(6)模块导入时的执行顺序:

​ Python中引用模块是按照一定的规则以及顺序去寻找的,这个查询顺序为:先从内存中已经加载的模块进行寻找找不到再从内置模块中寻找,内置模块如果也没有,最后去sys.path中路径包含的模块中寻找。它只会按照这个顺序从这些指定的地方去寻找,如果最终都没有找到,那么就会报错。

内存中已经加载的模块->内置模块->sys.path路径中包含的模块

(7)模块的查找顺序

​ <1> 在第一次导入某个模块时,会先检查该模块是否已经被加载到内存中(当前执行文件的名称空间对应的内存),如果有则直接引用(ps:python解释器在启动时会自动加载一些模块到内存中,可以使用sys.modules查看)

​ <2> 如果没有,解释器则会查找同名的内置模块

​ <3> 如果还没有找到就从sys.path给出的目录列表中依次寻找文件。

需要特别注意的是:自定义的模块名不应该与系统内置模块重名。

(8)以后在导入模块时会产生的坑:

<1> 注意自己定义的模块的名字

import abcd
abcd.func()

<2> 注意自己的思路 -- 循环导入时建议 导入模式放在需要的地方

import test,c,abcd      不建议这样导入
test.t1()
print(c.ac)
abcd.func() import test
import c
import abcd # 建议这样导入
#多行导入:易于阅读 易于编辑 易于搜索 易于维护。 import from from test import * # 拿整个工具箱 t1()
t2()
print(tt)

(9)通过_ all _ 控制要导入的内容

__all__=['name','read1'] #这样在另外一个文件中用from spam import *就只能导入列表中规定的两个名字

Python 入门之 模块的更多相关文章

  1. python 入门学习---模块导入三种方式及中文凝视

    Python 有三种模块导入函数 1. 使用import 导入模块 import modname : 模块是指一个能够交互使用,或者从还有一Python 程序訪问的代码段.仅仅要导入了一个模块,就能够 ...

  2. python入门之模块

    序什么是包包的作用一.什么是模块二.模块的三种来源三.模块的四种表现形式四.为什么要使用模块五. 如何创建,编写模块,并使用模块5.1 给模块起别名5.2 模块的导入方式5.3 循环导入问题 TOC ...

  3. Python入门-pip模块管理工具

    安装 # 在线安装 pip install <包名> 安装后,该模块文件会在安装python环境目录:lib/packages目录下 # 安装本地安装包 pip install <目 ...

  4. Python入门-常用模块

    1.sys,os import sys import os #获取当前的路径 print(sys.path[0]) print(os.getcwd()) print(os.path.abspath(& ...

  5. [笔记] Python入门---time模块

    #__author:Mifen #date: 2018/12/6 import time ''' 时间戳是一种用于表示时间的方式.从1970年1月1日0时0分0秒0毫秒开始到指定时间的秒数.世间戳也叫 ...

  6. Python入门-系统模块time

    1.time模块 时间戳:1970年,1月1日开始时间元祖:包含日期,时间,保存日期结构的元祖对象格式化时间日期:按照指定的标记进行格式化处理 时间戳 import time time_num = t ...

  7. Python基础入门(模块和包)

    1 模块 1.1 什么是模块 在 Python 中,一个 .py 文件就称之为一个模块(Module). 我们学习过函数,知道函数是实现一项或多项功能的一段程序 .其实模块就是函数功能的扩展.为什么这 ...

  8. Python基础入门-os模块

    今天我们来介绍一下os模块中常用的一些方法,当然python中的os模块中提供的使用方法有很多,但是这里面小编会列举出来一些和实际工作中应用的相关的方法,而且会有一些实际的例子方便大家对os模块理解. ...

  9. Python入门之第三方模块安装

    Python入门之第三方模块安装 平台:Win10 x64 + Anaconda3-5.3.0 (+Python3.7.0) Issue说明:pip install line_profiler-2.1 ...

随机推荐

  1. shell练习--关于二维数组的实现问题

    关于二维数组的实现问题:通过查询网友们的记录,可知有两个方法 方法1:通过通过2次读取赋值,来获取二维数组的方法. a=('1 2 3' '4 5 6' '7 8 9') for i in " ...

  2. vue学习-day03(动画,组件)

    目录: 1.品牌列表-从数据库获取列表    2.品牌列表-完成添加功能    3.品牌列表-完成删除功能    4.品牌列表-全局配置数据接口的根域名    5.品牌列表-全局配置emulateJS ...

  3. 【BZOJ4195】 [Noi2015]程序自动分析

    Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3,…代表程序中出现的变量,给定n个形如xi=xj或x ...

  4. week4 作业

    week4 作业 1.定义一个对所有用户都生效的命令别名,例如:lftps='lftp 172.168.0.1 /pub' 在 ~/.bashrc中添加命令: alias = 'rm -i' 2.显示 ...

  5. CentOS7修改计算机名!

    https://www.cnblogs.com/acgpiano/p/4170546.html sudo hostnamectl set-hostname <host-name>

  6. @清晰掉 c语言三"巨头" const:volatile:static

    const: 1.如果把const放在变量类型前,说明这个变量的值是保持不变的(即为常量),改变量必须在定义时初始化,初始化后对她的任何赋值都是非法的. 2.当指针或是引用指向一个常量时,必须在类型名 ...

  7. SSH port forwarding: bind: Cannot assign requested address

    https://www.electricmonk.nl/log/2014/09/24/ssh-port-forwarding-bind-cannot-assign-requested-address/

  8. gson转换json到bean时重命名

    @Expose   @SerializedName("0001") public Map<String,ChannelBean> c0001 = new HashMap ...

  9. HTM基础之HTML标签

    HTML(超文本标记语言) html代码实际上就是一套能够被浏览器所识别的规则代码,由一个个标签组成.html代码就是一大长串字符串,而这种字符串的格式正好能够被浏览器所识别,也就有了我们的WEB页面 ...

  10. 阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_7 Mybatis中使用代理Dao的执行过程分析

    另外一种情况,不写Mybits的dao实现类的情况. 切换工程到CRUD的工程.这里面是不写dao实现类的方式 进入到GetMaper里面.这里是创建代理对象 去找SqlSession的实现类Defa ...