Python公开课 - 详解模块

前言

模块是一个包含所有你定义的函数和变量的文件,可以被别的程序引入,以使用该模块中的函数等功能。

现在流行的模块化设计也是这个概念,一个项目经过模块化设计后,模块接口需要做标准化处理,这样可以方便在其他项目中进行复用,提高开发效率。

制作一个模块

我们可以编辑一个module.py文件

def my_print(info):
    print("module: %s" %info)

保存后,我们就可以在其他的文件中引用并使用其中的函数功能了

>>>import module
>>>module.my_print('hello world')

输出:
module: hello world

一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。

模块的路径

当我们使用import语句的时候,Python解释器是怎样找到对应的文件的呢?

这就涉及到Python的搜索路径,搜索路径是由一系列目录名组成的,Python解释器就依次从这些目录中去寻找所引入的模块。

>>> import sys
>>> sys.path
['', '/usr/lib/python35.zip', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/usr/lib/python3.5/lib-dynload', '/usr/local/lib/python3.5/dist-packages', '/usr/lib/python3/dist-packages']

我们可以通过sys.path.append()来添加指定的目录

包 - Package

在大多数情况,会选择以目录的方式来整理模块文件,例如创建一个test目录,并将module.py移动到该目录下,如果这时候直接使用my_print函数就会发现失败了,原因是找不到该目录

from test import module

module.my_print("hello world")


输出:

Traceback (most recent call last):
  File "test.py", line 1, in <module>
    from test import module
  File "/home/ubuntu/learn/test.py", line 1, in <module>
    from test import module
ImportError: cannot import name 'module'

这时候就算我们通过sys.path.append('test')也不行,

那么该怎么办呢,这时候需要在test目录下创建一个__init__.py文件就可以了

__init__.py的作用

含有__init__.py文件的目录会被Python解释器作为Package来对待。

我们在导入一个包时,实际上是导入了它的__init__.py文件。这样我们可以在__init__.py文件中批量导入我们所需要的模块,而不再需要一个一个的导入。

相关阅读


相关推荐
  1. 中科院上海实验学校
  2. 杭州西子实验学校
  3. 贪婪的女人
  4. Python公开课 - 数据抓取之Selenium使用(下)
  5. 梦里的烙饼
  6. 古韵南京 - 二日游
  7. 大连市普兰店市心心双语艺术早教中心 - 大连幼儿园黄页
  8. GitHub 宣布私有代码库完全免费 - 赶紧体验
  9. 小鸭子学游水
  10. 深圳市南山区泛海幼儿园 - 深圳幼儿园黄页
  11. 东风乡中学
  12. 事发武汉农夫山泉矿泉水内惊现大量虫卵
  13. 武汉00后大二学妹拍视频月入七十万
  14. 南昌县三江中学
  15. 央媒聚焦!国庆假期173.78万人次打卡大美黄陂
  16. 徐州市户部山小学
  17. Linux运维常用命令
  18. 成都市晋阳小学
  19. 面包房里的猫
  20. 武汉女子网上做兼职被骗六十五万
  21. 易中天给英雄武汉的一首诗 - 武汉新鲜事
  22. 北京市私立树人学校小学部
  23. 温州市黄龙第一小学(温州黄龙一小)
  24. 天津市南开区长治里小学
  25. 临沂市第十五中学
  26. 济南市催马小学
  27. 武汉市大兴第一实验小学新华家园校区(武汉大兴实验一小新华家园校区)
  28. 武汉市汉阳区楚天星碧水晴天幼儿园 - 武汉幼儿园黄页
  29. 刺猬和老虎
  30. 小刺猬找微笑
  31. 奥迪客户不满加价,被武汉4S店销售群殴
  32. 茂名市信宜市实验学校(小学部)
  33. 警方通报:武汉男子持刀至五死一伤,嫌犯已跳桥
  34. 里水镇旗峰初级中学
  35. 深圳市华富小学
  36. 深圳市龙岗区安良幼儿园 - 深圳幼儿园黄页
  37. 如何成为一个合格的项目经理
  38. 贪玩的国王
  39. 玺印幼儿园 - 成都市幼儿园黄页
  40. 新生儿后鼻孔堵塞怎么办 - 育儿经验
  41. TCP报头格式的是什么?
  42. Python公开课 - Appium安装
  43. 荣成市第十二中学
  44. 湛江市东升学校(小学部)
  45. 上海市宝山区荷露幼儿园 - 上海幼儿园黄页
  46. 浙江科技工程学校
  47. python3.5升级python3.6后出现 No module named apt_pkg 异常
  48. 爱画画的铅笔先生
  49. 西安市第九十八中学
  50. 沈阳市铁西区小东方幼儿园 - 沈阳幼儿园黄页
  51. 武汉推出越王勾践剑交通卡
  52. 古琴价高
  53. 湖北将发放消费券 - 武汉新鲜事
  54. 不想变成青蛙的蝌蚪
  55. 详解Tesseract之安装及基本使用
  56. 武汉动物园火烈鸟孔雀排队打疫苗
  57. 黄编幼儿园 - 广州幼儿园黄页
  58. 岳麓区莲花镇五峰中学
  59. 长春市榆树市老巧板双语幼儿园 - 长春幼儿园黄页
  60. 武汉市博物馆一日游