内容梗概:
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的使用的更多相关文章

  1. ECMA Script 6_模块加载方案 ES6 Module 模块语法_import_export

    1. 模块加载方案 commonJS 背景: 历史上,JavaScript 一直没有模块(module)体系, 无法将一个大程序拆分成互相依赖的小文件,再用简单的方法拼装起来. 其他语言都有这项功能: ...

  2. python 模块加载

    python 模块加载 本文主要介绍python模块加载的过程. module的组成 所有的module都是由对象和对象之间的关系组成. type和object python中所有的东西都是对象,分为 ...

  3. Python学习-3.Python的模块加载

    Python中使用import关键字进行模块加载. 先在Visual Studio中建立PythonModuleLoad项目作为演示. 1.同目录加载 建立SameFolder.py文件 写入代码: ...

  4. Python 模块化 模块搜索顺序、重复导入、模块加载列表(五)

    模块搜索顺序.重复导入.模块加载列表 0x00 模块搜索顺序: 举例: #test.py import sys for p in sys.path: print(p) 运行结果: C:\python ...

  5. 转:从pickle看python类成员的动态加载和类的定位

      pickle是Python轻便的对象序列化工具.使用pickle可以方便地把python对象写入文件对象中,或者像soap那样在socket间传送.     按照python的一贯作风,类的成员在 ...

  6. python基础31[常用模块介绍]

    python基础31[常用模块介绍]   python除了关键字(keywords)和内置的类型和函数(builtins),更多的功能是通过libraries(即modules)来提供的. 常用的li ...

  7. node模块加载层级优化

    模块加载痛点 大家也或多或少的了解node模块的加载机制,最为粗浅的表述就是依次从当前目录向上级查询node_modules目录,若发现依赖则加载.但是随着应用规模的加大,目录层级越来越深,若是在某个 ...

  8. requirejs:模块加载(require)及定义(define)时的路径小结

    原文地址:http://www.tuicool.com/articles/7JBnmy 接触过requirejs的童鞋可能都知道,无论是通过define来定义模块,还是通过require来加载模块,模 ...

  9. javascript中的闭包、模块与模块加载

    一.前言 闭包是基于词法作用域(  和动态作用域对应,词法作用域是由你写代码时,将变量写在哪里来决定的,因此当词法分析器处理代码时,会保持作用)书写代码时所产生的自然结果,甚至不需要为了利用闭包而有意 ...

随机推荐

  1. 日系插画学习笔记(一):SAI软件基础

    检测驱动是否安装正确:1.画笔没有压感,线条没有粗细变化2.画笔线条有锯齿 一.文件:新建文件:预设尺寸:一般选择A3(8k),A4(16k),A5(32k)作业要求:A4A5 - 300dpi,像素 ...

  2. lvs笔记

    LVS是Linux Virtual Server的简写,意为Linux虚拟服务器,是虚拟的服务器集群系统,可在UNIX/LINUX平台下实现负载均衡集群功能.该项目在1998年5月由章文嵩博士组织成立 ...

  3. kubectl基础支持

    kubectl get deployment -n alpha kubectl get deployment *****-deployment -n alpha -o json kubectl rol ...

  4. _itemmod_refresh

    -- 随机FM刷新设置-- 小技巧:很多服所说的装备鉴定效果可以通过这个实现,也可以对物品重新生成新的附魔--详细解说一下鉴定系统如何实现--1首先在_itemmod_enchant_groups中添 ...

  5. git 命令 clone分支的代码

    一个项目通常含有很多分支, master分支一般是经过测试,验证没有问题后,代码才会提交到master分支 develop分支,是测试经常拉下来进行测试的分支 直接复制develop分支的git 命令 ...

  6. CentOS6.5下搭建Samba服务实现与Windows系统之间共享文件资源

    FTP文件传输服务确实可以让主机之间的文件传输变得简单方便,但是FTP协议的本质是传输文件,而非共享文件,因此要想通过客户端直接在服务器上修改文件内容还是一件比较麻烦的事情. 1987年,微软公司和英 ...

  7. libxml2的xpath检索中文

    ZC: xmlXPathEvalExpression(...) 当 xpath的字符串中 包含中文的时候,返回NULL,暂时不知道该怎么处理了... ZC: 下面是测试的一些代码/文件,留着以后再研究 ...

  8. [osg][osgEarth][原]基于OE自定义自由飞行漫游器(初级版)

    由于受够了OE的漫游器,想搞个可以在全球飞行的漫游器,所以就做了一个: 请无视我的起名规则······ 类头文件:EarthWalkManipulator.h #pragma once //南水之源 ...

  9. java——File

    注意事项: 1:创建File对象需要导包, import java.io.File 2:File对象没有无参数构造.创建对象需要传参. 3:File类的对象,既可以代表文件也可以代表文件夹.   构造 ...

  10. SQL关于WHERE 的计算次序

    WHERE可包含任意数目的AND和OR操作符.允许两者结合以进行复杂 和高级的过滤. 但是OR和AND操作符是有先后次序的. 比如,原意是想找出 3班和5班年龄为21岁的同学,使用 :SELECT * ...