python中导入模块的三种形式

1. import 模块名 [as 别名]

       使用这种方式导入之后,使用时需要在对象之前加上模块名作为前缀,必须以“模块名.对象名”的形式进行访问。如果模块名字很长的话,可以为导入的模块设置一个别名,然后使用“别名.对象名”的形式来使用其中的对象。

       import tensorflow as tf   这个就是典型地设置一个别名。

>>>import math                              # 导入标准库math
>>>math.sin(0.5)                            # 求0.5(单位是弧度)的正弦
0.479425538604203
>>>import random                            # 导入标准库random
>>>n = random.random()                      # 得到一个[0, 1)之间的随机小数
>>>n = random.randint(1, 100)               # 得到一个[0, 100)之间的随机整数
>>>n = random.randrange(1, 100)             # 返回一个[0, 100)之间的随机整数
>>>import os.path as path                   # 导入标准库os.path,并设置别名为path
>>>path.isfile(r'C:\windows\notepad.exe')
True
>>>import numpy as np                       # 导入标准库numpy,并设置别名为np
>>>a = np.array([1, 2, 3, 4])               # 通过模块的别名来访问其中的对象
>>>a
array([1, 2, 3, 4])
>>>print(a)
[1, 2, 3, 4]

2. from 模块名 import 对象名[as 别名]

       使用这种方式仅导入明确指定的对象,并且可以为导入的对象确定一个别名。这种导入方式可以减少查询次数,提高访问的速度,同时也可以减少程序员需要输入的代码量,不需要使用模块名作为前缀。

>>>from math import sin                     # 只导入模块中的指定对象
>>>math.sin(3)                            
0.1411200080598672
>>>from math import sin as f
>>>f(3)
0.1411200080598672
>>>from os.path import isfile               # 给导入的对象起个别名
>>>isfile(r'C:\windows\notepad.exe')
True

3. from 模块名 import *

       这是上面用法的一种极端情况,可以一次导入模块中通过__all__变量指定的所有对象。

>>>from math import *                # 导入标准库math中所有对象
>>>gcd(36, 18)                       # 最大公约数
18
>>>pi                                # 常数π
3.141592653589793
>>>e                                 # 常数e
2.718281828459045
>>>log2(8)                           # 计算以2为底的对数值
3.0
>>>log10(100)                        # 计算以10为底的对数值
2.0
>>>radians(180)                      # 把角度转换成弧度
3.141592653589793

       这种方式简单粗暴,写起来比较省事,可以直接使用模块中的所有对象而不需要再使用模块名作为前缀。但一般并不推荐这样使用。一方面这样会降低代码的可读性,有时候很难区分自定义函数和从模块中导入的函数;另一方面,这种导入对象的方式将会导致命名空间的混乱。如果多个模块中有同名的对象,只有最后一个导入的模块中的对象是有效的,而之前导入的模块中的同名对象都将无法访问,不利于代码的理解和维护。

 

仅用作自己回顾用,侵权必删

摘自——Python程序设计开发宝典

 

 

 

 

 

 

 

你可能感兴趣的:(python中导入模块的三种形式)