人工智能之Python17 模块

模块就是程序,是更高一级的封装

模块

命名空间

命名空间(namespace)表示标识符(ideantifier)的可见范围。一个标识符可以在多个命名空间中定义,它在不同命名空间中的含义是互不相干的。

在python中每个模块都会维护一个独立的命名空间,我们应该将模块名加上,才能够正常使用模块中的函数。

导入模块

import 模块名

直接import,但是在调用模块中的函数的时候,需要加上模块的命名空间。

#f2c.py
"""
    定义一个华氏温度跟摄氏温度相互转换的模块
"""
def c2f(cel):
    fah = cel * 1.8 + 32
    return fah

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

# module_import.py
import f_c

print("32摄氏度 = %.2f华氏度" % f_c.c2f(32))
print("100华氏度 = %.2f摄氏度" % f_c.f2c(100))

## 运行结果是
32摄氏度 = 89.60华氏度
100华氏度 = 37.78摄氏度

from 模块名 import 函数名

这种导入方式会直接将模块的命名空间覆盖进来,所以调用的时候也就不需要再加上命名空间了

#f2c.py
"""
    定义一个华氏温度跟摄氏温度相互转换的模块
"""
def c2f(cel):
    fah = cel * 1.8 + 32
    return fah

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

# module_import.py
from f_c import c2f,f2c

print("32摄氏度 = %.2f华氏度" % c2f(32))
print("100华氏度 = %.2f摄氏度" % f2c(100))

import 模块名 as 新名字

这种方式给导入的命名空间替换一个新的名字

#f2c.py
"""
    定义一个华氏温度跟摄氏温度相互转换的模块
"""
def c2f(cel):
    fah = cel * 1.8 + 32
    return fah

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

# module_import.py
import f_c as fc
print("32摄氏度 = %.2f华氏度" % fc.c2f(32))
print("100华氏度 = %.2f摄氏度" % fc.f2c(100))

模块的作用

  • 封装、组织python的代码。

    当代码量非常庞大的时候,可以有组织有纪律地根据不同的功能,将代码分割成不同的模块,这样,每个模块之间都是相互独立的。

  • 实现代码的重用

模块的搜索路径

Python模块的导入需要一个路径搜索的过程,而这个路径搜索就是一组目录,可以通过sys模块中的path变量显示出来

#f2c.py
"""
    定义一个华氏温度跟摄氏温度相互转换的模块
"""
def c2f(cel):
    fah = cel * 1.8 + 32
    return fah

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

# module_import.py
import sys
import os
sys.path.append(os.curdir)
#import f_c
#from f_c import c2f,f2c
import f_c as fc
print("32摄氏度 = %.2f华氏度" % fc.c2f(32))
print("100华氏度 = %.2f摄氏度" % fc.f2c(100))

模块的包

在实际的开发中,一个大型的系统有成千上万的Python模块是很正常的事情。单单用模块来定义Python的功能显然不够,如果都放在一起显然不好管理并且有命名冲突的可能,因此,python中也出现了包。

包:把模块分门别类的存放再不同的文件夹,然后把各个文件夹的位置告诉python

创建包

  1. 创建一个文件夹,用于存放相关的模块,文件夹的名字即包的名字
  2. 在文件夹中创建一个init.py的模块文件,内容可以为空
  3. 将相关的模块放入文件夹中
#f2c.py
"""
    定义一个华氏温度跟摄氏温度相互转换的模块
"""
def c2f(cel):
    fah = cel * 1.8 + 32
    return fah

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

# module_import.py
import sys
import os
sys.path.append(os.curdir)
#import f_c
#from f_c import c2f,f2c
import module.f_c as fc
print("32摄氏度 = %.2f华氏度" % fc.c2f(32))
print("100华氏度 = %.2f摄氏度" % fc.f2c(100))

猜你喜欢

转载自blog.csdn.net/u012806787/article/details/79317524
今日推荐