import 和from…import
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… 的异同
相同点:
- 两者都会执行模块对应文件,两者都会产生模块的名称空间
- 两者调用功能是,需要跑到定义时寻找作用域关系,与调用位置无关
- 当使用其导入会执行导入模块里面的功能(比如:如果有打印就会,被导入的模块就会被中打印语句将会执行)
不同点:
- import需要加入前缀
- 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的更多相关文章
- 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 ...
- import 与 from…import 的区别
首先你要了解 import 与 from…import 的区别. import 模块:导入一个模块:注:相当于导入的是一个文件夹,是个相对路径. from…import:导入了一个模块中的一个函数:注 ...
- 【转载】python import和from import
import和from import都是将其他模块导入当前模块中. 刚开始一直以为import和from import唯一的区别,就是from import可以少写一些模块名.虽然from XX im ...
随机推荐
- CF1027D Mouse Hunt题解
题目: 伯兰州立大学的医学部刚刚结束了招生活动.和以往一样,约80%的申请人都是女生并且她们中的大多数人将在未来4年(真希望如此)住在大学宿舍里. 宿舍楼里有nn个房间和一只老鼠!女孩们决定在一些房间 ...
- Java面试题必备知识之ThreadLocal
老套路,先列举下关于ThreadLocal常见的疑问,希望可以通过这篇学习笔记来解决这几个问题: ThreadLocal是用来解决什么问题的? 如何使用ThreadLocal? ThreadLocal ...
- 渐进式web应用开发---promise式数据库(五)
在前面的一篇文章中,我们已经实现了使用indexedDB实现ajax本地数据存储的功能,详情,请看这篇文章.现在我们需要把上面的一篇文章中的代码使用promise结构来重构下.我们为什么需要使用pro ...
- c语言进阶2-变量的作用域与无参函数
一. 什么是函数 函数是具有特定功能的模块.可以说一个完整的程序其实是由多个函数共同完成的.C语言的全部工作都是由程式各样的函数完成的,所以也把C语言称为函数式语言.使用模块化设计可能 使 ...
- [剑指offer] 53. 表达数值的字符串
题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2","-123","3.1 ...
- [LeetCode] 6. ZigZag Conversion (Medium)
原题链接 把字符串按照 ↓↗↓……的顺序,排列成一个 Z 形,返回 从左到右,按行读得的字符串. 思路: 建立一个二维数组来按行保存字符串. 按照 ↓↗↓……的方向进行对每一行加入字符. 太慢了这个解 ...
- [HDOJ] 1753.大明A+B (大数加法)
Problem Description 话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫"大明". 这时他已经不是那个只会做100以内加法的那个"小明 ...
- 《HTML总结》
一.HTML简介 Hyper Text Markup Language(超文本标记语言) 超文本包括:文字.图片.音频.视频.动画等 二.HTML发展史 1993-6发布超文本标记语言 ....... ...
- Android的简述2
android提供了三种菜单类型,分别为options menu,context menu,sub menu. options menu就是通过按home键来显示,context menu需要在vie ...
- Hadoop自学系列集(四) ---- Hadoop集群
久等了,近期公司比较忙,学习的时间都没有啊,到今日才有时间呢!!!好了,下面就跟着笔者开始配置Hadoop集群吧. hosts文件和SSH免密码登录配置好了之后,现在进入Hadoop安装目录,修改一些 ...