美文网首页
Python3中几种import方法的区别

Python3中几种import方法的区别

作者: Mocha_1996 | 来源:发表于2019-03-16 17:22 被阅读0次

    前言

            第一次见到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,则可以直接使用导入的函数。  

            欢迎各位在评论区交流和批评指正~

    相关文章

      网友评论

          本文标题:Python3中几种import方法的区别

          本文链接:https://www.haomeiwen.com/subject/euhsmqtx.html