import和from...import的异同
为了节省读友的时间,直接上结论:
【结论】
1)两种导入方式得到的结果是一个名为sys.modules的字典(键是被导入对象的名称,值是导入对象所在的路径)
2)就算在不同的位置写了多遍import语句也不会多次导入:导入前都会先去sys.modules中查询,若存在则不再重复导入
3)两种导入方式的搜索路径一样:脚本运行的当前目录---->python相关的环境变量---->Python安装时指定的默认目录
4)运行原理:
- import xxx:会试图把xxx当做模块来导入,如果搜索失败则报异常:ImportError。跟是否定义过__init__.py和__all__无关,直接搜索并导入xxx
- from xxx import yyy:跟是否定义过__init__.py和__all__无关,直接搜索并导入yyy
- from xxx import *:会导入包/模块xxx中变量__all__的值所指定的对象(若__init__.py和__all__全部为空,则不导入任何对象)
5)from xxx import yyy:xxx只能是包或模块;yyy可以是模块、类、函数、变量(python3中不能是包)
6)主要的使用场景:
- 如果代码环境容易同名冲突,则建议使用:import xxx;
- 如果代码环境极少同名冲突,为了减少敲代码的量则可以使用:from xxx import yyy;
- 尽量不要使用:from xxx import *(一是容易同名冲突;二是从运行原理可知到底导入了什么取决于变量__all__并不一定跟你预想的一样)
【注意事项】
1)如果from xxx import *的xxx是包,则:一般会在包的__init__.py中定义__all__变量的取值以决定导入的内容,且此时跟模块中定义的__all__无关。例如:

2)如果from xxx import *的xxx是模块,则:一般会在模块中定义__all__变量的取值以决定导入的内容,例如:

3)__init__.py中除了常用的定义__all__变量的取值外,高级使用方法可参见:https://zhuanlan.zhihu.com/p/115350758
import和from...import的异同的更多相关文章
- import 和from…import
import 和from-import 一.import模块名 import time print(time.time()) import首次导入模块发生了3件事: 使用import time导入的时 ...
- import和from...import
目录 一.import 模块名 二.from 模块名 import 具体的功能 三.import和from...import...的异同 一般使用import和from...import...导入模块 ...
- python中import和from...import区别
在python用import或者from...import来导入相应的模块.模块其实就是一些函数和类的集合文件,它能实现一些相应的功能,当我们需要使用这些功能的时候,直接把相应的模块导入到我们的程序中 ...
- import和from import陷阱二
1 2 3 4 5 6 7 8 9 10 11 12 13 14 #from os import path import os.path path='/home/vamei/doc/file.txt' ...
- python中import和from...import...的区别
python中import和from...import...的区别: 只用import时,如import xx,引入的xx是模块名,而不是模块内具体的类.函数.变量等成员,使用该模块的成员时需写成xx ...
- python的import与from...import的不同之处
在python用import或者from...import来导入相应的模块.模块其实就是一些函数和类的集合文件,它能实现一些相应的功能,当我们需要使用这些功能的时候,直接把相应的模块导入到我们的程序中 ...
- 【pyhton】import math与import cmath
import math与import cmath分别代表导入math模块和复数math模块 还有一种导入方式是 from math import sqrt 从math中单独导入sqrt 直接可以用sq ...
- Python import与from import使用及区别介绍
Python程序可以调用一组基本的函数(即内建函数),比如print().input()和len()等函数.接下来通过本文给大家介绍Python import与from import使用及区别介绍,感 ...
- java中import机制(指定import和import *的区别)
转自:https://www.cnblogs.com/dtts/p/4692480.html java中有两种包的导入机制,总结如下: 单类型导入(single-type-import), ...
- import 和 from … import 模块的变量、方法引用差异
import 和 from … import 模块的变量.方法引用差异 还是上面例子中的模块 support.py: def print_func( par ): print "Hello ...
随机推荐
- 前端自定义cli
Windows PowerShell 版权所有 (C) Microsoft Corporation.保留所有权利. 尝试新的跨平台 PowerShell https://aka.ms/pscore6 ...
- sort 从大到小从小到大
简介 虽然可以 写一个cmp函数但是太麻烦 正解 sort(v.rbegin(), v.rend()) 从大到小 sort(v.begin(), v.end()) 从小到大
- iPaaS如何实现安全通信保障
iPaaS概述 iPaaS,即Integration Platform as a Service,是一种云服务模型,旨在提供统一且全面的解决方案,设计.执行.管理和监控云端及本地环境中的应用集成流程. ...
- SciTech-Mathmatics-Probability+Statistics-III-Population:Parameter<->Sample:Statistics - Hypothesis Testing假设检验的原理与应用
SciTech-Mathmatics-Probability+Statistics-III Population:Parameter<->Sample:Statistics Hypothe ...
- SciTech-BigDataAIML- Python Data Science Handbook 以及 HTML源码 转Markdown源码 的办法:
以下文为例: Copy HTML Source code from the web page. Transform the HTML code to Markdown code: https://co ...
- SqlServer复制和订阅(实现主从同步) -九五小庞
1.登录必须是服务器名称不能是ip 2.订阅服务器不需要提前创建数据库 复制方: (1).展开要发布的数据库节点,找到复制下的本地发布 (2).右击本地发布,选择本地发布 (3.下一步选择要发布的数据 ...
- CF1922E Increasing Subsequences
一个显然的思路就是构造很多互不相关的上升序列.但是这样构造出来的 \(n\) 是 \(O(\log_2^2 n)\) 量级的,所以需要考虑新做法. 假设我们本来有一个上升序列,我们能否往里面插数?如果 ...
- 传统UGO权限+ACL权限管理结合 控制权限案例分析
以下是CentOS系统中传统UGO权限管理与ACL权限管理的详细对比及其结合应用场景的解析,附实际案例说明: 一.传统UGO权限管理 1. 核心机制 权限模型:将用户分为三类: ...
- 6、rt-thread学习
1.rt-thread软件包管理功能,我们先来了解下软件包的功能定义,软件包是运行rt-thread操作系统平台之上,面向不同应用领域的软件,形成一个个通用性强的软件组件,并由软件包描述信息.文档.示 ...
- threading.local的使用
from threading import local 多个线程操作同一个变量,如果不加锁,会出现数据错乱问题,但是 读个线程同时操作 threading.local 对象 就不会出现数据错乱 作用: ...