python基础之 025 模块加载与import的使用
内容梗概:
1. 模块
2. import
3. from xxx import xxx 1.模块
定义:
模块就是一个包含了python定义和声明的文件,文件名就是模块的名字加上.py后缀.目前写的所有的py文件都可以看成是一个模块
但是import加载的模块一共分成四个通用类别:
1. 使用pyhton编写的py文件
2. 已被变异为共享库或者DLL或C或者C++的扩展
3. 包好一组模块的包.
4. 使用c编写并连接到python解释器的内置模块 为什么要用模块??
1. 可以把代码进行分类.
2. 可以实现代码的重用. 2.import 2.1系统导入的过程
导入模块的时候都做了些什么? 首先. 在导入模块的一瞬间. python解释器会先通过sys.modules来判断该模块是否已经导入了该模块.
如果已经导入了则不再导入.如果该模块还未导入过.则系统会做三件事.
1. 为导入的模块创立新的名称空间
2. 在新创建的名称空间中运行该模块中的代码
3. 创建模块的名字. 并使用该名称作为该模块在当前模块中引用的名字.
我们可以使用globals来查看模块的名称空间 几个注意点
1.在模块中使⽤用global. 我们之前说global表示把全局的内容引入到局部.
但是.这个全局指的是py文件.换句话说.global指向的是模块内部. 并不会改变外部模块的内容
2.如果我们在不同的模块中引入了同一个模块.并且在某一个模块中改变了被引入模块中的全局变量.
则其他模块看到的值也跟着边. 原因是python的模块只会引入一次.大家共享同⼀个名称空间
3.if __name__ == '__main__': 可以作为程序入口,要学会使用(重要)
在Python中. 每个模块都有⾃己的__name__ 但是这个__name__的值是不定的. 当我们把一个模块作为程序运行的入口时.
此时该模块的__name__是"__main__" , 而如果我们把模块导入时.此时模块内部的__name__就是该模块⾃身的名字. 正确的导入模块的顺序:
1. 所有的模块导入都要写在最上面.这是最基本的.
2. 先引入内置模块.
3. 再引入扩展模块.
4. 最后引入你⾃⼰定义的模块. 3. from xxx import xxx
在使用from的时候, python也会给我们的模块创建名称空间. 这一点和import是一样的.
但是from xxx import xxx的时候. 我们是把这个空间中的一些变量引入过来了.说白了.就是部分导入.
当⼀一个模块中的内容过多的时候. 我们可以选择性的导入要使⽤用的内容. from xxx import xxx 直接函数()就可以执行行了, 并且from语句句也⽀支持一行语句导入多个内容.并且也支持as改名. 坑:(注意)
1.当我们从一个模块中引入一个变量的时候. 如果当前文件中出现了重名的变量时.会覆盖掉模块引入的那个变量
2.不要重名. 切记. 不要重名! 不仅仅是变量名不要重复. 我们自己创建的py文件的名字不要和系统内置的模块重名.
否则. 引入的模块都是python内置的模块. 切记, 切记!!!
python基础之 025 模块加载与import的使用的更多相关文章
- ECMA Script 6_模块加载方案 ES6 Module 模块语法_import_export
1. 模块加载方案 commonJS 背景: 历史上,JavaScript 一直没有模块(module)体系, 无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来. 其他语言都有这项功能: ...
- python 模块加载
python 模块加载 本文主要介绍python模块加载的过程. module的组成 所有的module都是由对象和对象之间的关系组成. type和object python中所有的东西都是对象,分为 ...
- Python学习-3.Python的模块加载
Python中使用import关键字进行模块加载. 先在Visual Studio中建立PythonModuleLoad项目作为演示. 1.同目录加载 建立SameFolder.py文件 写入代码: ...
- Python 模块化 模块搜索顺序、重复导入、模块加载列表(五)
模块搜索顺序.重复导入.模块加载列表 0x00 模块搜索顺序: 举例: #test.py import sys for p in sys.path: print(p) 运行结果: C:\python ...
- 转:从pickle看python类成员的动态加载和类的定位
pickle是Python轻便的对象序列化工具.使用pickle可以方便地把python对象写入文件对象中,或者像soap那样在socket间传送. 按照python的一贯作风,类的成员在 ...
- python基础31[常用模块介绍]
python基础31[常用模块介绍] python除了关键字(keywords)和内置的类型和函数(builtins),更多的功能是通过libraries(即modules)来提供的. 常用的li ...
- node模块加载层级优化
模块加载痛点 大家也或多或少的了解node模块的加载机制,最为粗浅的表述就是依次从当前目录向上级查询node_modules目录,若发现依赖则加载.但是随着应用规模的加大,目录层级越来越深,若是在某个 ...
- requirejs:模块加载(require)及定义(define)时的路径小结
原文地址:http://www.tuicool.com/articles/7JBnmy 接触过requirejs的童鞋可能都知道,无论是通过define来定义模块,还是通过require来加载模块,模 ...
- javascript中的闭包、模块与模块加载
一.前言 闭包是基于词法作用域( 和动态作用域对应,词法作用域是由你写代码时,将变量写在哪里来决定的,因此当词法分析器处理代码时,会保持作用)书写代码时所产生的自然结果,甚至不需要为了利用闭包而有意 ...
随机推荐
- better-scroll影响vue中radio和checkbox的双向数据绑定
我的解决办法:radio <input v-model="answer" type="radio" name="answer" val ...
- 使用closest替换parent
尽量不要使用parent去获取DOM元素,如下代码: var $activeRows = $this.parent().parent().children(".active"); ...
- Docker Engine SDKs and API 的开发2
Examples using the Docker Engine SDKs and Docker API After you install Docker, you can install the G ...
- 微服务架构与实践4_Docker
构建Docker映像 定义Dockerfile=>Docker根据Dockerfile构建出映像 包含: 基础映像(父映像)信息 维护者信息 映像操作命令 容器启动命令 .net standar ...
- System.ServiceProcess与System.Configuration.Install命名空间的介绍
System.ServiceProcess 命名空间提供用于实现.安装和控制 Windows 服务应用程序的类.服务是长期运行的可执行文件,其运行没有用户界面 System.ServiceProces ...
- mysql表分区存储过程
本文为博主原创,未经允许不得转载: 由于数据库一张表数据量有几千万条,而且在不断增长,看见公司前辈写了一个创建表分区的存储过程,感觉 甚是牛逼,在此供自己保留学习. /*PROCEDURE creat ...
- 使用TestServer测试ASP.NET Core API
今儿给大家分享下,在ASP.NET Core下使用TestServer进行集成测试,这意味着你可以在没有IIS服务器或任何外部事物的情况下测试完整的Web应用程序.下面给出示例: public Sta ...
- Spring-test单元测试
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-test& ...
- WinForm 拖动、移动窗体
private const int WM_NCLBUTTONDOWN = 0XA1; private const int HTCAPTION = 2; [System.Runtime.InteropS ...
- Newtonsoft.Json 去掉\r\n
itemKindList.ToString(Newtonsoft.Json.Formatting.None)