【Python】import和from……import的区别

1、语法分析

        首先from A import a1 是从A模块导入a1工具(可以是某个 函数,全局变量,类),import A是导入整个A模块的全部内容(包括全部的函数,全局变量,类)。

2、内存分析:

from...import...会在内存中创建并加载该模块工具的副本,当有另外一个程序导入时,会在内存中创建另一个副本(变量而非函数)进行加载,不会共用一个副本。所以程序进行的修改不会影响到被导入的原模块,且不同程序之间不会互相影响

import...方法导入模块会在内存中直接加载该模块的全部属性。当出现多个程序导入该模块时,会共用一个模块,程序之间会互相影响,包括原模块

图文解释:

(1)创建基础模块


#a.py
data=[1,2,3]def run():print(data)

(2)from...import...导入模块,控制台输出

#b.py
from a import run,data
data[0]=5     #类似赋值,b里面的data和a里面的data指向同一个对象,这么做对两者都有影响
print(data) #输出[5,2,3] 
run()        #输出[5,2,3]
data=100        #由于直接改变了data的指向,所以不会影响源模块a
print(data) #输出100
run()    #输出[5,2,3]

(3)import...导入模块,控制台输出

#c.py
import a   #由于是直接import a 所以都是从源模块a里面拿出来的,所以这里的改变都会影响源模块a
            
a.data[0]=5     #可以理解为有着作用域 a.的限制
print(a.data) #输出[5,2,3]
a.run() #输出[5,2,3]
a.data=100 #因为这里影响的是a里面的data
print(a.data) #输出100
a.run() #输出100

3、from...import *

属于from...import...只不过是加载了模块的全部属性。

当多个程序需要同时导入一个模块并且都是访问时,使用import 可以节省内存空间

当多个程序需要同时导入一个模块当其中一个需要修改模块,那么修改的模块的程序应该使用from来导入模块.

4、数据类型

  1. 系统自带的模块

以正则表达式模块为例,查看这两种导入方式有什么区别呢?

我们分别使用type函数来看看他们的类型:

>>> import re
>>> type(re)
<class 'module'>
>>> from re import search
>>> type(search)
<class 'function'>

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python中,"from ... import"语句用于从指定的模块或包中导入函数、变量或类。在你提供的引用中,"from ..paypal import get_order"表示从上一级目录的paypal文件夹中导入get_order函数。具体的导入路径可以根据实际的文件结构来确定。\[1\] 需要注意的是,"from ... import"语句中的"..."表示相对导入的路径,可以使用".."表示上一级目录,也可以使用更多的".."来表示更高级的目录。\[2\] 另外,为了使用"from ... import"语句,需要明确三个概念:模块、包和库。模块是一个.py文件,包是由多个模块组成的文件夹,而库是完成一定功能的代码集合,可以是模块或包的形式。\[3\] 综上所述,"python from ../../ import"语句的具体含义需要根据实际的文件结构来确定,其中"../../"表示相对导入的路径。 #### 引用[.reference_title] - *1* [python from...import *](https://blog.csdn.net/weixin_39928736/article/details/110319874)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [python中from...import...的用法和讲解](https://blog.csdn.net/rubysxl/article/details/95303606)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [pythonimport,from……import使用方法](https://blog.csdn.net/weixin_50952710/article/details/127893746)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

贾话

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

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

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

打赏作者

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

抵扣说明:

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

余额充值