"""
今日内容:
1、模块
2、模块的导入
3、环境变量sys.path
4、模块间的相互调用
""" """
# 1、模块
-- 什么是模块?
-- 模块是一系列具有相似功能的函数的集合体 -- 为什么要有模块?
-- 因为一系列功能相同功能的函数为了方便统一进行管理,将这些函数放进一个文件中就形成了一个模块 -- 如何使用模块?
-- 使用模块时首先需要导入模块 --> 导入模块的方法为 import 函数名 或 from...import... -- 模块的分类:模块可以分为四类
-- 1.使用python编写的.py文件
-- 2.把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py文件,该文件夹称之为包)
-- 3.使用C编写并链接到python解释器的内置模块
-- 4.已被编译为共享库或DLL的C或C++扩展
""" """
# 2、模块的导入
import 模块名
-- 首次导入模块名经过的三件事:
-- 将被导入的模块进行编译,编译成为.pyc文件
-- 将被导入模块从上至下进行执行,形成被导入模块的名称空间
-- 在导入模块的文件中生成一个与被导入模块同名的变量名,指向被导入模块的名称空间 -- 再次导入该模块时
-- 不再进行导入模块的前两模块,只进行第三步 -- 起别名导入
-- 在进行模块导入时可以为模块起别名,
-- 方式为: import 模块名 as 别名 -- 模块的分类:
-- 内置模块与自定义模块(系统自带的自定义模块、第三方自定义的模块、自己自定义的模块) -- 模块的加载顺序
-- 模块的加载顺序是: 内存 > 内置 > 自定义的模块(按照sys.path中的顺序进行加载,可使用print(sys.path)查询环境变量) from..import...
-- 导入完成的三件事
-- 1.将被导入的模块编译形成对应的pyc文件
-- 2.进入模块,从上执行执行模块中的代码,将产生的所有名字存放在该模块文件的全局名称空间中
-- 3.在导入模块的文件中形成(一个或多个)名字指向模块全局名称空间中的(一个或多个)具体名字 -- 起别名
-- from 模块名 import 模块中的名字1, ..., 模块中的名字n
-- from 模块名 import 名字 as 别名 -- from...import导入依赖环境变量 sys.path from..import *(不建议使用)
-- 模块中默认会添加 __all__ ,__all__ 就是管理模块中能被 * 导入的变量们
-- __all__可以自定义,自定义 * 能导入的变量们, __all__的list中名字全部可以自定义
-- __all__ = ['a', 'b', 'c', 'd_', '_e'] 就是个列表,可以直接进行修改 -- 系统默认添加的__all__中不会纳入 _开头的名字,所以默认在外界通过from...import *无法导入_开头的名字
-- _开头的名字对from...import *是隐藏的,指名道姓依然可以被外界导入使用
""" """
# 3、环境变量
-- 环境变量是存放路径的一个list,在需要进行路径查找时,会按照环境变量中的顺序进行查找,第一位的一定是当前文件夹。
-- 环境变量的操作:
-- 查询: 首先导入sys模块,然后使用print(sys.path)就可以查询
-- 清空: 使用sys.path.clear()就可以清空环境变量,任何导入都不能使用
-- 添加: 添加指定路径到环境变量
-- sys.path.append()
-- sys.path.insert() """ """
# 4、模块间的相互导入
-- 模块间的相互导入有链式导入及循环导入
-- 链式导入
-- 由于导入模块时经过了三个过程,所以在链式导入时会首先进入到被导入的模块中执行,如果在被导入模块中还导入了其它模块,就会进入其它模块,直到没有模块导入
-- 循环导入
-- 如果在m1中导入了m2,在m2模块中导入了m1,那么在执行m1时,m2实际的名称空间就是不完整的名称空间,如果需要m2的某个功能时,可能会报错
-- 解决循环导入名称空间加载不全的问题很简单,在导入自定义模块时,在使用的上一行进行导入就行
-- 导入非自定义的模块可以在文件的开头就进行导入 # 问题
# m1.py
import m2
print(m2.y)
x = 666 # m2.py
import m1
print(m2.x)
y = 888 # 解决
# m1.py
x = 666
import m2
print(m2.y)
"""

day16 模块导入及环境变量的更多相关文章

  1. day16模块,导入模板完成的三件事,起别名,模块的分类,模块的加载顺序,环境变量,from...import语法导入,from...import *,链式导入,循环导入

    复习 ''' 1.生成器中的send方法 -- 给当前停止的yield发生信息 -- 内部调用__next__()取到下一个yield的返回值 2.递归:函数的(直接,间接)自调用 -- 回溯 与 递 ...

  2. Postman基本使用——get、post请求、断言、环境变量

      Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件. 它提供功能强大的 Web API & HTTP 请求调试. 它能够发送任何类型的HTTP 请求 (GET, ...

  3. Liunx将私密代理添加到环境变量

    .bash_profile文件存在于用户主目录下,绝对路径为/home/$name/.bash_profile.bash_profile文件是隐藏文件,里面包含的是用户的用户的环境变量. 注意: 这个 ...

  4. postman的基本用法,请求,断言,环境变量

    postman基本用法 Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件. 它提供功能强大的 Web API & HTTP 请求调试. 它能够发送任何类型的HTT ...

  5. python学习之模块导入,操作邮件,redis

    python基础学习06 模块导入 导入模块的顺序 1.先从当前目录下找 2.当前目录下找不到,再从环境变量中找,如果在同时在当前目录和环境变量中建立相同的py文件,优先使用当前目录下的 导入模块的实 ...

  6. 关于Linux环境变量

    查看全局变量:  printenv 查看单个环境变量的值可以用echo命令,必须在环境变量的名称前放一个$符号 如:

  7. postman中环境变量的设置方法、使用方法和实际中常见使用场景

    文中共介绍2种添加环境变量的方法.2种使用环境变量的方法,以及不同方法的适用范围. 文中给出了环境变量的两种常见使用场景:切换环境.动态参数关联(前一个请求的响应作为下一个请求的入参) 2种添加环境变 ...

  8. DAY16 模块和包的导入

    一.包 1.包的定义 包:就是一系列模块的结合体 2.重点 1.包中一定要有一个专门来管理包中所有模块的文件 2.包名:存放一系列模块的文件夹名字 3.包名(包对象)存放的是管理模块的那个文件的地址, ...

  9. linux python 修改环境变量 添加自定义模块路径

    举一个很简单的例子,如果你发现一个包或者模块,明明是有的,但是会发生这样的错误: >>> from algorithm import *Traceback (most recent ...

随机推荐

  1. $ python manage.py makemigrations You are trying to add a non-nullable field 'name' to course without a default; we can't do that (the database needs something to populate existing rows). Please selec

    问题: $ python manage.py makemigrationsYou are trying to add a non-nullable field 'name' to course wit ...

  2. Call JMS Web Service

    The content type application/json of the response message does not match the content type of the bin ...

  3. java实现上传文件夹

    我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 首先我们需要了解的是上传文件三要素: 1.表单提交方式:post (get方式提交有大小 ...

  4. openSmile-2.3.0在Linux下安装

    我这边官网下载的特别慢,提供一下云盘下载安装包: 链接:http://pan.baidu.com/s/1sl2YGbz 密码:p1vj windows下的我也下载了 链接:http://pan.bai ...

  5. vue-cli3项目首页加载速度优化(cdn加速,路由懒加载,gzip压缩)

    今天打算上线vue的单页面项目,上线后,首页加载速度巨慢! 原因是项目上线后,网速不够快,加载js,css等资源很慢, 打开打包好的文件发现chunk-vendors.xxxxxxx.js的包很大,达 ...

  6. php框架对比

    一.ThinkPHP框架 优势:简单易用(Model,Controller,View负责各自的工作),它拥有支持XML标签库技术的编译型模版引擎,支持两种模版标签, 动态编译,缓存技术.还支持自定义标 ...

  7. AcWing:240. 食物链(扩展域并查集 or 带边权并查集)

    动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形. A吃B, B吃C,C吃A. 现有N个动物,以1-N编号. 每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种. 有人用 ...

  8. Spring AOP潜入易懂的讲解

    为什么会有面向切面编程(AOP),我们知道Java是一个面向对象(OOP)的语言,但它有一些弊端,比如当我们需要为多个不具有继承关系的对象引入一个公共行为,例如日志,权限验证,事务等功能时,只能在每个 ...

  9. Mysql索引查询失效的情况

    首先,复习一下索引的创建: 普通的索引的创建: CREATE INDEX  (自定义)索引名  ON  数据表(字段); 复合索引的创建: CREATE INDEX  (自定义)索引名  ON  数据 ...

  10. Leetcode题目215.数组中的第K个最大元素(中等)

    题目描述: 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 ...