Python 模块导入_import和from_import详解和区别

模块导入_import和from_import详解和区别

模块的导入

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

import语句导入

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

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

import加载的模块分为四种类型:

  1. 使用python编写的代码.py文件

  2. 已被编译为共享库或DLL的C或C++扩展

  3. 一组模块的包

  4. 使用C编写并链接到python解释器的内置模块

我们一般通过import语句实现模块的导入和使用,import本质上是使用了内置函数__import__()

当我们通过import导入一个模块时,python解释器进行执行,最终会生成一个对象,这个对象就代表了被加载的模块。

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

执行结果是:

31840800
<class 'module'>

由上,我们可以看到math模块被加载后,实际会生成一个module类的对象,该对象被math变量引用。我们可以通过math变量引用模块中所有的内容。

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

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

import math as m
​
#import math
#m = mathprint(m.sqrt(4)) #开方运算

from…import导入

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

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

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

from 模块名 import *

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

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

from math import pi,sin
​
print(sin(pi/2))  #输出1.0

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

import导入的是模块。from...import导入的是模块中的函数/类。

❤️如果进行类比的话,import导入的是“文件”,我们要使用该“文件”下的内容,必须前面加“文件名称”。from...import导入的是文件下的“内容”,我们直接使用这些“内容”即可,前面再也不需要加“文件名称”了。

我们自定义一个模块calculator.py

"""一个实现四则运算的计算器"""def add(a,b):
  return a+b
​
def minus(a,b):
  return a-b
​
​
class MyNum():
  def print123(self):
    print(123)

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

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

from calculator import *
​
a = add(100,200)  #无需模块名,可以直接引用里面的函数/类
print(a)
​
b = MyNum()
b.print123()

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

留不住的人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值