对于很多向我一样的初学者来说,不知道什么时候用import xxx,什么时候用from xxx import xxx,

或者是from x.y import xxx?通常我们导入的模块是系统自带模块,第三方库和自定义模块,那么我们就从这三方面来说。

一,系统自带模块

用我们常见math模块来解释

#例一
import math
a=math.cos(5)

print(a)

有的时候是这样引用

#例二

from math import cos        #引用三角函数的时候不用加上()

a=cos(5)

print(a)

例一导入的是math的factorial函数,例二导入的是math里的三角函数 。那么他们们的区别是什么呢?看看下边的例子


import math怎么操作 python import math from_html

import math怎么操作 python import math from_html_02

 很显然,import引入的是模块math,它是一个module类,from import引入的是模块里的sin()函数,它是一个function或method类。

如果你的代码里边已经决定就使用这一个sin()函数了,那么这两种方法都可以用,没有区别。

import math
a=math.sin(5)
from math import sin
a=sin(5)

 但是如果你用math里边的多个函数或方法,那么第一种方法更加清晰一点

import math
a=sin(5)+cos(5)

相反的话就是

from math import sin,cos
a=sin(5)+cos(5)

二,第三方库

如果使用的第三方库的话,我们也会看见如下的代码

from lxml.html import fromstring
  
  selector = fromstring(HTML)

也可以写成

from lxml import html
  
 selector = html.fromstring(HTML)

但是,如果这样写的话会报错

import lxml
 selector = lxml.html.fromstring(HTML)

那么这里的lxml.html又是什么东西呢?

这种情况多常见于一些特别大型的第三方库中,这种库能处理多种类型的数据。例如lxml它既能处理xml的数据,又能处理html的数据,于是这种库会划分子模块,lxml.html模块专门负责html相关的数据。

三,自定义模块

要先理解自定义模块,先来理解一下模块与包的定义

1、模块、包
模块 module:一般情况下,是一个以.py为后缀的文件。
module 可看作一个工具类,可共用或者隐藏代码细节,将相关代码放置在一个module以便让代码更好用、易懂,让coder重点放在高层逻辑上。
module能定义函数、类、变量,也能包含可执行的代码。module来源有3种:
①Python内置的模块(标准库);②第三方模块;③自定义模块。

包 package: 为避免模块名冲突,Python引入了按目录组织模块的方法,称之为 包(package)。包 是含有Python模块的文件夹

即包相当于一个文件夹,模块相当于文件夹里的文件,文件内容是代码块,便于引用。

先创建一个包(文件夹)CSDN,在里边加入了main.py和Tuster_.py模块

import math怎么操作 python import math from_xml_03

在Tuster_.py模块中,定义模块中的函数write,每次调用write函数都会打印‘write函数被调用’

import math怎么操作 python import math from_python_04

在main.py模块中,调用Tuster_模块的write函数

 

import math怎么操作 python import math from_python_05

 这样就可以调用我们自己定义的模块啦!!!可以根据需要自己定义自己模板,并填充代码块,达到让主体代码更加简洁,隐藏部分代码,可读性更加高的目的啦!!!