Python 模块

Python语言里模块就是一个程序,只不过它相较于函数,是更高级的封装

  • 在这里,我们知道容器是对各种数据类型的封装
  • 函数是对Python语句的封装
  • 类是对方法与属性的封装(对函数和数据的封装)
  • 那么模块就是对上述各种封装组成程序的再封装

模块的作用:

  • 封装的Python代码,当代码量很大时,我们最好把它写成不同的模块进行封装,这样可以使函数更加易懂

  • 模块封装完以后,可以像函数那样实现对代码的复用

  • 在模块封装完毕后,还需要对其导入,即:import *然而导入必须符合一定的规则:

  1. 封装的模块必须和调用该程序的代码在同一目录下,不能在子目录或者上级目录,这样都不能导入
  2. 搜索路径的方式,Python模块的导入需要一个路径搜素的过程
  3. 导入一个模块时,Python会在预定好的搜索路径里寻找对应的模块,有则成功导入,没有则会导入失败
>>> import Request
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    import Request
ModuleNotFoundError: No module named 'Request'
  • Python提供了路径函数,可以向路径的列表里添加一个路径
>>> import Hello
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    import Hello
ModuleNotFoundError: No module named 'Hello'   #没有在搜索路径内,无法找到
>>> import sys
>>> sys.path
['', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python37\\Lib\\idlelib', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python37\\python37.zip', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python37\\DLLs', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python37\\lib', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python37', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python37\\lib\\site-packages']
>>> sys.path.append("D:\\Python_Module")  #向搜索路径的列表里添加后,系统后进行搜索
>>> import Hello
>>> Hello.hello()  #在调用模块里的函数时,需要带上命名空间,即模块名
Hello World
  • 可见常见的搜索路径名称为["...Python37\\Lib\\idlelib" , "...\\python37.zip","...\\Python37\\DLLs","...\\Python37\\lib","...\\Python37","...\\Python37\\lib\\site-packages(设置存放模块的文件夹)"] **3.包(package)**
  • 在大型的程序中,会有很多Python的模块,Python为了按类把这些模块分开,引入了包的概念
  • 包,把不同类型的模块存放到不同的文件夹下,然后再把文件的位置告诉Python,导入(包名). (模块名). (方法名),就可以进行调用。 使用包一般包括以下几个步骤:
  1. 创建,创建一个文件夹(目录),用于存放相关的模块,文件夹的名字即是包的名字
  2. 在文件夹里创建一个__ init__.py的文件内容可以为空,他的作用是告诉Python将其当做包来进行处理
  3. 将相关的模块放入该文件夹下
    在这里插入图片描述
    在这里插入图片描述
    然后自动生成__ pycahe__的文件夹:
    在这里插入图片描述
    就完成了包的创建于导入的准备

关于导入模块

  • import (module) 导入一个模块
  • 还可以 import (module) as New_name
  • 模块的多重导入:from (module) import * 或者 多个方法名
  • 模块测试时用到的语句if __ name__ == __ main __语句
  • 在一个程序被当做模块导入时,模块里的__ name __返回值是模块名的字符串的形式
  • 不当作模块导入,则返回值为 "__ mian __”字符串
#模块
def c2f(cel):
    fah = cel * 1.8 + 32
    return fah

def f2c(fah):
    cel = (fah - 32) / 1.8
    return cel

def test():
    print("32摄氏度对应的华氏度为%d" %c2f(32))
    print("99华氏度对应的摄氏度为%d" %f2c(99))


if __name__ == "__main__":
    test()
print(__name__ == "__main__")  #当作模块导入时返回为False
print(__name__)


当模块当做程序运行时:

32摄氏度对应的华氏度为89  #可见其执行了test()函数
99华氏度对应的摄氏度为37
True
__main__     #当做一般程序运行时,__name__返回值为"__main__”

当模块被导入时

#调用模块的程序
import Module1.TempConver as tc
print(tc.__name__)

print("37摄氏度对应的华氏度为%d" %tc.c2f(37))
print("37华氏度对应的摄氏度为%d" %tc.f2c(37))
#运行的结果为:
>>>False
Module1.TempConver   可见首先运行了模块,再运行调用程序的代码,其中test()语句并没有被调用
#================================调用程序的代码
Module1.TempConver  
37摄氏度对应的华氏度为98
37华氏度对应的摄氏度为2

总结

因此在写大型的Python程序时我们最好以模块的形式把程序进行封装

  • if __ name __ == "__main __"进行测试
  • 以包(package)的形式把不同类型的模块进行封装,再设置导入
  • 可以使得程序更加简洁、漂亮、易读、易懂。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值