20201222_146_模块导入_import 和 from_import 语句详解和区别

2. 模块的导入

模块化设计的好处之一就是“代码可复用性高”。写好的模块可以被反复调用,重复使用。模块的导入就是“在本模块中使用其他模块”。

2.1 import 语句导入

import 语句的基本语法格式如下:

import 模块名  #导入一个模块
import 模块 1,模块 2…  #导入多个模块
import 模块名 as 模块别名  #导入模块并使用新名字

import 加载的模块分为四个通用类别:

  1. 使用 python 编写的代码(.py 文件);
  2. 包好一组模块的包;
  3. 使用 C 编写并链接到 python 解释器的内置模块;
  4. 已被编译为共享库或 DLL 的 C 或 C++扩展。

我们一般通过 import 语句实现模块的导入和使用,import 本质上是使用了内置函数__import__()。
当我们通过 import 导入一个模块时,python 解释器进行执行,最终会生成一个对象,这个对象就代表了被加载的模块。

【例】导入模块对象

import math

print(id(math))
print(type(math))
print(math.pi)  # 通过math.成员名来访问模块中的成员

运行结果:
在这里插入图片描述
从上面的例子,我们可以看到 math 模块被加载后,实际会生成一个 module 类的对象,该对象被 math 变量引用。我们可以通过 math 变量引用模块中所有的内容。

我们通过 import 导入多个模块,本质上也是生成多个 module 类的对象而已。

有时候,我们也需要给模块起个别名,本质上,这个别名仅仅是新创建一个变量引用加载的模块对象而已。

【例2】导入模块对象并别名化

import math as m

# 等效于
# import math
# m = math

print(m.sqrt(4))

运行结果:
在这里插入图片描述

2.2 from…import 导入

Python 中可以使用 from…import 导入模块中的成员。基本语法格式如下:

from 模块名 import 成员 1,成员 2,…

如果希望导入一个模块中的所有成员,则可以采用如下方式:

from 模块名 import *

注意:尽量避免“from 模块名 import *”这种写法。它表示导入模块中所有的不是以下划线开头的名字都导入到当前位置。 但你不知道你导入什么名字,很有可能会覆盖掉你之前已经定义的名字。而且可读性极其的差。一般生产环境中尽量避免使用,学习时没有关系。

【例】使用 from…import 导入模块指定的成员

from math import pi, sin

print(sin(pi / 2))

运行结果:
在这里插入图片描述

2.3 import 语句和 from…import 语句的区别

import 导入的是模块。from…import 导入的是模块中的一个函数/一个类。
如果进行类比的话,import 导入的是“文件”,我们要使用该“文件”下的内容,必须前面加“文件名称”。from…import 导入的是文件下的“内容”,我们直接使用这些“内容”即可,前面再也不需要加“文件名称”了。

【例】
我们自定义一个模块 calculator.py
.1

"""一个实现四则运算的计算器"""


def add(a, b):
    return a + b


def minus(a, b):
    return a - b


class MyNum:
    @staticmethod
    def print123():
        print(123)

我们在另一个模块 test.py 测试:
.2 导入模块

import Calculate

a = Calculate.add(30, 40)
# add(100, 200)  # 不加模块名无法识别
print(a)

运行结果:
在这里插入图片描述

.3 导入模块中的指定成员

from Calculate import *

a = add(30, 40)  # 无需模块名,可以直接引用里面的函数/类
print(a)

b = MyNum()
b.print123()

运行结果:
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值