python之路--模块和包

时间:2021-08-02 09:38:34

一 . 模块

⾸先,我们先看⼀个老⽣常谈的问题. 什么是模块. 模块就是⼀个包含了python定义和声明的⽂件, ⽂件名就是模块的名字加上.py后缀. 
  换句话说我们⽬前写的所有的py⽂件都可以看成是⼀个模块但是我们import加载的模块⼀共分成四个通⽤类别:  

  1. 使⽤pyhton编写的py⽂件
  2. 已被变异为共享库或者DLL或C或者C++的扩展
  3. 包好⼀组模块的包.
  4. 使⽤c编写并连接到python解释器的内置模块

为什么要使⽤模块? 为了我们写的代码可以重⽤. 不⾄于把所有的代码都写在⼀个⽂件内. 当项⽬规模比较⼩的时候. 
  完全可以使⽤⼀个py搞定整个项⽬的开发. 但是如果是⼀个⾮常庞⼤的项⽬. 此时就必须要把相关的功能进⾏分离. ⽅便我们的⽇常维护. 以及新项⽬的开发.

  如何使⽤模块? 我们已经⽤过很多模块了. 导入模块有两种⽅式
    1. import 模块
    2. from xxx import xxxx

⼆.  import

    ⾸先. 我们先看import, 在使⽤import的时候, 我们先创建⼀个tianlong.py. 在该⽂件中创建
  ⼀些武林前辈和⼀些打⽃场景, 代码如下.

main_male_actor = '萧峰'
def fight():
print(f'{main_male_actor}少林寺大战丁春秋,庄聚贤,慕容复')
def end():
print('萧峰降龙十八掌天下第一')

  然后在创建一个江湖.py 在该文件中使用import

import tianlong
tianlong.fight() # 萧峰少林寺大战丁春秋,庄聚贤,慕容复
tianlong.end() # 萧峰降龙十八掌天下第一

  在Python中模块是不能够重复导入的. 当重复导入模块时. 系统会根据sys.modules来判断
    该模块是否已经导入了. 如果已经导入. 则不会重复导入

# 如果我在tianlong.py文件中写一个print('====飞雪连天射白鹿,笑书神侠倚碧鸳====')
# 然后在jainghu.py 文件中引入import tianlong 无论引入多少次,都只打印一次
# ====飞雪连天射白鹿,笑书神侠倚碧鸳====
  导入模块的时候:
  1. 去判断当前正在导入的模块是否已经倒入过
  2. 如果已经导入过,不会重新导入该模块
  3. 如果没有导入过. 首先开辟一个内存空间
  4. 把该模块中的代码放在新开辟的空间中. 运行该模块中的代码
  5. 把该文件的名字作为当前名称空间的名字(前提是没有as)
在Python中. 每个模块都有⾃⼰的__name__ 但是这个__name__的值是不定的. 当我们把⼀个模块作为程序运⾏的入⼝时. 
  此时该模块的__name__是"__main__" , ⽽如果我们把模块导入时. 此时模块内部的__name__就是该模块⾃⾝的名字

  我们可以利⽤这个特性来控制模块内哪些代码是在被加载的时候就运⾏的. 哪些是在模块
    被别⼈导入的时候就要执⾏的. 也可以屏蔽掉⼀些不希望别⼈导入就运⾏的代码. 尤其是测试代码.

if __name__ == '__main__':
tianlong.main_male_actor = '萧峰'
# 此时, 只有从该模块作为入运行的时候才会把main_male_actor设置成萧峰
print("哇哈哈哈哈哈")
# 只有运行该模块才会打印. import的时候是不会执行这里的代码的

  

最后,切记,不要重名,我们创建的py 文件的名字千万不要和系统内置模块重名.

python之路--模块和包的更多相关文章

  1. python之路模块与包

    一.import加载的模块分为四个通用类别:          1 使用python编写的代码(.py文件) 2 已被编译为共享库或DLL的C或C++扩展 3 包好一组模块的包 4 使用C编写并链接到 ...

  2. python之路——模块和包

    阅读目录 一 模块 3.1 import 3.2 from ... import... 3.3 把模块当做脚本执行 3.4 模块搜索路径 3.5 编译python文件 二 包 2.2 import 2 ...

  3. 二十五. Python基础(25)--模块和包

    二十五. Python基础(25)--模块和包 ● 知识框架   ● 模块的属性__name__ # my_module.py   def fun1():     print("Hello& ...

  4. Python之路-Python中的模块与包

    一.模块简介 在实际开发中我们不可能不用到系统的标准模块,或第三方模块. 如果想实现与时间有关的功能,就需要调用系统的time模块.如果想实现与文件和文件夹有关的操作,就需要要用到os模块. 每一个 ...

  5. Python中的模块与包

    标准库的安装路径 在import模块的时候,python是通过系统路径找到这些模块的,我们可以将这些路径打印出来: >>> pprint.pprint(sys.path) ['', ...

  6. 【循序渐进学Python】10.模块和包

    1.导入模块 任何Python程序都可以作为模块导入,只要Python解释器能找到我们定义的模块所在位置即可,一般来讲,在一个模块被导入时,Python解释器会按照下面的步骤进行搜索: 在当前所在目录 ...

  7. Python类、模块、包的区别

    类 类的概念在许多语言中出现,很容易理解.它将数据和操作进行封装,以便将来的复用. 模块 模块,在Python可理解为对应于一个文件.在创建了一个脚本文件后,定义了某些函数和变量.你在其他需要这些功能 ...

  8. Python进阶之模块与包

    模块 .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans GB","S ...

  9. 【Python实战】模块和包导入详解(import)

    1.模块(module) 1.1 模块定义 通常模块为一个.py文件,其他可作为module的文件类型还有".pyo".".pyc".".pyd&qu ...

随机推荐

  1. mongodb 启动脚本和配置

    http://justcoding.iteye.com/blog/2270466 http://blog.csdn.net/neu*/article/details/32328531

  2. linux下跳板机跟客户端之间无密码登陆

    创建证书: [root@lnmp src]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which ...

  3. magento启用SSL改http成https

    Magento是电子商务网站,对于网站的用户信息安全来说,让Magento使用SSL连接是一个很好的解决方案.如果在页面的边栏或者底部放上些表明本站使用安全连接的图片,显得更专业,让客户有安全感,对于 ...

  4. Redis单机版安装与部署

    Redis官网:http://redis.io 下载Redis wget https://github.com/antirez/redis/archive/3.0.0-rc1.tar.gz 解压并安装 ...

  5. 解决android应用程序适用新老android系统版本方法

    老的android系统不能运行高版本系统的新方法,为了解决这个问题:  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { ...

  6. 黄聪:Microsoft Enterprise Library 5.0 系列教程(六) Security Application Block

    原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(六) Security Application Block 开发人员经常编写需要安全功能的应用程序.这些应用程序 ...

  7. 【大前端攻城狮之路】JavaScript函数式编程

    转眼之间已入五月,自己毕业也马上有三年了.大学计算机系的同学大多都在北京混迹,大家为了升职加薪,娶媳妇买房,熬夜加班跟上线,出差pk脑残客户.同学聚会时有不少兄弟已经体重飙升,开始关注13号地铁线上铺 ...

  8. 【原】无脑操作:ElasticSearch学习笔记(01)

    开篇来自于经典的“保安的哲学三问”(你是谁,在哪儿,要干嘛) 问题一.ElasticSearch是什么?有什么用处? 答:截至2018年12月28日,从ElasticSearch官网(https:// ...

  9. PSR-1 基本代码规范

    基本代码规范 本篇规范制定了代码基本元素的相关标准, 以确保共享的PHP代码间具有较高程度的技术互通性. 关键词 “必须”("MUST").“一定不可/一定不能”("MU ...

  10. Cdnbest的cdn程序默认支持web Socket

    Cdnbest的cdn程序默认支持web Socket    WSS 是 Web Socket Secure 的简称, 它是 WebSocket 的加密版本. 我们知道 WebSocket 中的数据是 ...