python学习笔记5.2-包和模块的导入

在理解什么是包以及什么是模块之后,就要学会如何去导入包或者模块了,本文主要介绍如何导入包以及在导入包的过程中需要注意一些什么。导入包的核心是使用关键词import以及搭配其他的一些关键词(from,as)等。因而根据不用的需要会有以下几种导入形式。

1. 只使用import导入

一般情况下,如果包比较小,功能比较单一,或者是属于系统功能,能够使用很短的字符就能使用函数或类的时候,就只需要用关键词import,显得代码逻辑更加清晰。

import sys
sys.path.append('your dir')

import time
print(time.time())

2. import 搭配 as

在包或者模块名称比较长,我们想在代码中使用比较公认的简写的时候,import 搭配as的使用会使得代码更加简洁。

import numpy as np
import matplotlib.pyplot as plt

3. import 搭配from

有时候我们只想导入一个包中的一个特定功能的模块,这样会节约内存的使用,这个时候我们可以使用from…import …。

from matplotlib import pyplot as plt
from numpy import random

4. import 搭配 from *

有时候我们想导入包或者模块后直接使用导入对象的名来调用对象,而不需要在前面加入包名。

from numpy import *
from time import *

需要注意的是,当使用此种调用方式时,如果一个模块如果定义有列表all,则from module import * 语句只能导入all列表中存在的对象。

import 语句可以在程序的任何位置使用,你可以在程序中多次导入同一个模块,但模块中的代码*仅仅*在该模块被首次导入时执行。后面的import语句只是简单的创建一个到模块名字空间的引用而已。sys.modules字典中保存着所有被导入模块的模块名到模块对象的映射。这个字典用来决定是否需要使用import语句来导入一个模块的最新拷贝. from module import *语句只能用于一个模块的最顶层.

特别注意:由于存在作用域冲突,不允许在函数中使用from 语句。

5. reload重新导入

如果更新了一个已经用import语句导入的模块,内建函数reload()可以重新导入并运行更新后的模块代码.在reload()运行之后的针对模块的操作都会使用新导入代码,不过reload()并不会更新使用旧模块创建的对象,因此有可能出现新旧版本对象共存的情况。

注意: 使用C或C++编译的模块不能通过 reload() 函数来重新导入。记住一个原则,除非是在调试和开发过程中,否则不要使用reload()函数.

import time
# doing something

reload(time)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端知识分享

第217天:深入理解Angular双向数据绑定的原理

双向绑定是新的前端框架中频繁出现的一个新词汇,也是mvvm的核心原理。angularjs五条核心信念中的数据驱动,便是由双向绑定进行完成。

17520
来自专栏编程

文件与异常(三)

异常 Python使用被称为异常的特殊对象来管理程序执行期间发生的错误。每当发生让Python不知 所措的错误时,它都会创建一个异常对象。如果你编写了处理该异常...

18060
来自专栏Hongten

java多线程系列_线程简介(1)

    线程是程序运行的基本执行单元。当操作系统(不包括单线程的操作系统,如微软早期的DOS)在执行一个程序时,会在系统中建立一个进程,而在这个进程中,必须至少...

13320
来自专栏西枫里博客

thinkPHP5模版页面volist循环offset不能使用变量

有这样一个应用场景:当volist循环需要排除前面几个数据的时候,我们通常使用offset来操作。而假设前面要排除的数据是根据当前页面占位符来确定的,而需要排除...

9620
来自专栏Petrichor的专栏

python: py2下 中文 的 文件读写 及 打印

  读写中文文件时,不需要考虑编码的情况。此时虽然可以正常从文件中读取中文,也可以正常地将中文写入文件中,但是无法正常打印中文字段到屏幕上:

33420
来自专栏性能与架构

console.log() 之外的调试技巧

console.log( ) 是JS开发时常用的小工具,输出一些信息来辅助调试,console 还有很多有用的方法,下面介绍几个方便调试的用法 跟踪堆栈 例如想...

38190
来自专栏java 成神之路

vmstat 命令详解

43470
来自专栏一“技”之长

iOS代码运行的磨刀石-预编译指令 原

所谓预编译,就是程序代码在编译之前,开发工具为我们预先做的一些工作。不要小瞧这些指令,没有它们,我们的代码可能寸步难行。

10120
来自专栏WD学习记录

8-21Android 学习ing

(2)Tomcat服务器默认采用的是ISO8859-1编码得到的参数值,这种编码不支持中文,也会导致乱码

10530
来自专栏我的博客

awk第二课

使用方法:awk ‘{pattern + action}’ {filenames} 尽管操作可能会很复杂,但语法总是这样,其中 pattern 表示 AWK 在...

359100

扫码关注云+社区

领取腾讯云代金券