import 和from…import

一、import模块名

import time
print(time.time())

import首次导入模块发生了3件事:

使用import time导入的时候,使用方法只能通过time.方法名() ,不能直接方法名

1. 在内存中生成一个叫做time的名称空间
2. 将会运行time.py文件,然后把time.py文件内的名称空间放入time的名称空间内
3. 把time的名称空间执行通过import和from…import… *.py(当前导入time模块的文件)的名称空间中

1.1 导入模块

模块的重复导入会直接引用之前创造好的结果,不会重复执行模块的文件,即重复导入会发生:spam=spam=模块名称空间的内存地址

import spam as sm

money = 111111

sm.money
sm.read1() # 'spam模块:1000'
sm.read2
sm.change() print(money) # 1000

1.2 导入多个模块

import sys, time, os

# 推荐使用下述方式
import sys
import time
import os

二、from模块名 import具体的功能

from time import gmtime
print(gmtime()) # 注
from time import * # 所有(等同于import time),不推荐使用,因为很容易造成变量名冲突

from...import...首次导入模块发生了3件事:

1. 在内存中生成一个叫做time的名称空间
2. 运行time.py文件,然后把time.py文件内的名称空间放入到time的名称空间
3. 把gtime方法执行import和from…import *.py(当前导入time模块的文件)的名称空间内

​ 优点:不用加前缀,使用模块中的方法更加简洁

​ 缺点:容易与当前执行文件中名称空间中的名字冲突

2.1 导入文件所有功能

# test.py
__all__ = ['f1', 'f2'] def f1():
print('f1') def f2():
print('f2') def f3():
print('f3')
# run.py
1. * 导入会被限制
from test import * # __all__限制了 from test import * f1()
f2()
# f3() f3() NameError: name 'f3' is not defined 2. 单独导入不会被限制
from test import f3 # __all__不会限制
f3() 3. import导入不会被线子
import test # __all__ 不会限制
testt.f3()

三、import和from…import… 的异同

  • 相同点:

    1. 两者都会执行模块对应文件,两者都会产生模块的名称空间
    2. 两者调用功能是,需要跑到定义时寻找作用域关系,与调用位置无关
    3. 当使用其导入会执行导入模块里面的功能(比如:如果有打印就会,被导入的模块就会被中打印语句将会执行)
  • 不同点:

    1. import需要加入前缀
    2. from…import…不需要添加前缀(容易导致与模块中名称空间冲突)

四、总结

import发生的事情:

  • 在内存中会生成导入模块的(time)名称空间;
  • 运行time.py文件,会把time.py模块中产生的名称空间装入time的名称空间中;
  • 将import导入的模块(time.py)所产生的名称空间,导入当前所要执行文件的名称空间中;

引用方法需要模块名加方法名,不能直接写方法名;

from ... import ...发生的事情:

  • 在内存中会生成导入模块的(time)名称空间;
  • 运行time.py文件,会把time.py模块中产生的名称空间装入time的名称空间中;
  • 把 gtime()方法执行产生的名声空间导入到当前所要执行文件的名称空间;

引用方法不需要模块名加方法名,而只需写方法名即可,缺点容易与当前文件的名称空间产生冲突

使用from导入自定义模块,一般是导入同一级目录下模块(当前执行文件中导入),如果不是同一级,则会报错;

__all__:

  • 使用from .. import * 导入会被限制;

import 和from…import的更多相关文章

  1. python中import和from...import区别

    在python用import或者from...import来导入相应的模块.模块其实就是一些函数和类的集合文件,它能实现一些相应的功能,当我们需要使用这些功能的时候,直接把相应的模块导入到我们的程序中 ...

  2. 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' ...

  3. python中import和from...import...的区别

    python中import和from...import...的区别: 只用import时,如import xx,引入的xx是模块名,而不是模块内具体的类.函数.变量等成员,使用该模块的成员时需写成xx ...

  4. python的import与from...import的不同之处

    在python用import或者from...import来导入相应的模块.模块其实就是一些函数和类的集合文件,它能实现一些相应的功能,当我们需要使用这些功能的时候,直接把相应的模块导入到我们的程序中 ...

  5. 【pyhton】import math与import cmath

    import math与import cmath分别代表导入math模块和复数math模块 还有一种导入方式是 from math import sqrt 从math中单独导入sqrt 直接可以用sq ...

  6. Python import与from import使用及区别介绍

    Python程序可以调用一组基本的函数(即内建函数),比如print().input()和len()等函数.接下来通过本文给大家介绍Python import与from import使用及区别介绍,感 ...

  7. java中import机制(指定import和import *的区别)

    转自:https://www.cnblogs.com/dtts/p/4692480.html java中有两种包的导入机制,总结如下: 单类型导入(single-type-import),       ...

  8. import 和 from … import 模块的变量、方法引用差异

    import 和 from … import 模块的变量.方法引用差异 还是上面例子中的模块 support.py: def print_func( par ): print "Hello ...

  9. import 与 from…import 的区别

    首先你要了解 import 与 from…import 的区别. import 模块:导入一个模块:注:相当于导入的是一个文件夹,是个相对路径. from…import:导入了一个模块中的一个函数:注 ...

  10. 【转载】python import和from import

    import和from import都是将其他模块导入当前模块中. 刚开始一直以为import和from import唯一的区别,就是from import可以少写一些模块名.虽然from XX im ...

随机推荐

  1. 手机web app开发笔记

    各位朋友好,最近自学开发了一个手机Web APP,“编程之路”,主要功能包括文章的展示,留言,注册登录,音乐播放等.为了记录学习心得,提高自己的编程水平,也许对其他朋友有点启发,特整理开发笔记如下. ...

  2. Pascal到c++,求大佬翻译!

    请大佬翻译完毕后私信我谢谢! var a,b,c,d,f:array[1..1000]of longint; i,j,k,n,m,o:longint; procedure zx(p,q:longint ...

  3. 问题解决:Maven execution terminated abnormally (exit code 1)

    Maven execution terminated abnormally (exit code 1) 修改setting.xml中的镜像位置 如下就可以了 <mirror> <id ...

  4. TensorFlow笔记-变量,图,会话

    变量 存储一些临时值的作用或者长久存储.在Tensorflow中当训练模型时,用变量来存储和更新参数.变量包含张量(Tensor)存放于内存的缓存区.建模时它们需要被明确地初始化,模型训练后它们必须被 ...

  5. 前端手势控制图片插件书写四(图片上传及Ios图片方向问题)

    1.在图片上传中,使用的input的type为File的属性.使用filereader的Api let that = this; var file = document.getElementById( ...

  6. 【转】DataTable 中数据筛选

    转自:http://blog.163.com/yangxw_2009/blog/static/155255217201032931755646/ 对DataTable进行过滤筛选的一些方法Select ...

  7. Linux 安装MySql——apt-get版

    0)apt-get update 1)通过apt-get安装 更新设置到最新系统:    sudo apt-get update    sudo apt-get upgrade sudo apt-ge ...

  8. 【git】15分钟学会使用Git和远程代码库

    Git是个了不起但却复杂的源代码管理系统.它能支持复杂的任务,却因此经常被认为太过复杂而不适用于简单的日常工作.让我们诚实一记吧:Git是复杂的,我们不要装作它不是.但我仍然会试图教会你用(我的)基本 ...

  9. Spring IoC源码探索(一)

    一.探索前:谈谈我对IoC容器的了解 IoC容器主要用于管理Bean的生命周期和对象间的关系,通过依赖注入(DI)对容器中的Bean所需要依赖的其他对象进行注入.而这一切都是在Ioc容器里边进行的,假 ...

  10. spark 源码分析之七--Spark RPC剖析之RpcEndPoint和RpcEndPointRef剖析

    RpcEndpoint 文档对RpcEndpoint的解释:An end point for the RPC that defines what functions to trigger given ...