前言
第一次见到Python编程语言就被Python优雅的语言风格所吸引,果断抛弃了JAVA,转向了Python,虽然运行速度还是不快,但是对于写写demo,算法等时候思路比较清晰。毕竟life is short, I use Python.
Life is short, I use Python正文
相信很多朋友在网上看各种demo代码的时候,会看到python有不同的导入的形式,例如import xxx, from xxx import yyy这种。那么我们应该使用哪种import方式呢?不同的import方式又有什么区别呢?
1.1 常规import
Example1.1.1:
import math
在import之后跟上你要导入的模块名即可。还可以一条语句导入多个模块, 模块之间用逗号(,)分隔。
Example1.1.2:
import os, math, sys
好处是可以节省空间,但是违背的Python Style Guide的推荐做法,即每个模块分别用一行语句导入。
在import的时候同时可以对模块进行重命名,一般用缩写来表示模块名,便于引用模块里面的函数,变量等等,这种方式在使用模块中的内容时要加上模块的名字。例如
Example1.1.3:
import math as pymath
print(pymath.sin(4))
1.2 from xxx import yyy
很多时候往往你只是想要使用模块中的一部分内容,这个时候就可以使用from xxx import yyy。此时使用模块中的内容就无需使用加入模块名,可以直接使用。例如
Example 1.2.1:(使用exp函数的时候不需要加入math):
from math import exp
print(exp(1))
这种方式即使代码很复杂,也能很方便地知道从哪个模块引入了哪些东西。当然你也可以通过类似的语句导入一个模块的所有内容,使用from xxx import * 即可,“ * ”是通配符,表示引入所有内容。
Example 1.2.2:
from math import *
print(tan(1))
print(cos(2))
事实上from xxx import * 方式看似便捷,但事实上不推荐使用,因为它会混淆命名空间(namespace),举个例子来说:
Example 1.2.3:
from math import *
print(exp(1)) # 输出自然对数的底数e, 2.718281828459045。
def exp(num):
print(num ** 2)
print(exp(1)) # 此时使用exp()函数则会调用用户定义的exp()函数, 输出1.
此时由于代码只是一个小的demo,对混淆命名空间感受不是很深刻。想象是一个很复杂的系统,从一个模块导入了所有的内容,你根据业务需求,对模块中的函数进行了适当的修改。在后期调用的时候,写了一天的代码的你自以为调用了模块自带的内容,最终发现程序输出始终和预期的不一样。然后就是无穷尽的debug, 加班。。。。。。希望你能养成import的好习惯,做一个高效率程序员,加油!
总结:
Python中 import 主要有两种方式,一种就是 import module, 采用这种方式调用模块中函数时要使用module.func 的方式。另一种则是 from module import something,则可以直接使用导入的函数。
欢迎各位在评论区交流和批评指正~
网友评论