• 模块


      python中的模块

      用过c语言编程的,都知道在c语言中如果要引用sqrt这个函数,必须要用语句 “#include”引入math.h这个头文件,否则是无法正常进行调用的。

      同理,在python中有一个概念叫做模块(module),这个和C语言的头文件以及java中的包很类似,比如在python中要调用sqrt函数,必须要用import关键字引入math这个模块。

      说直接点,模块好比是工具包,要像使用这个工具包中的工具(就好比函数),就需要导入这个模块。

      import

       在python中用关键字import 来引入某个模块,比如要引用模块math,就可以在文件最开始的地方用import math来引入。

       举例: import module1,module2...

       当解释器遇到import语句,如果模块在当前的搜索路径就会被导入。

       当调用math模块中的函数时,必须要这样引用

    模块名.函数名

       为什么必须要加上模块这样调用?

        因为可能存在这样一种情况:在多个模块中含有相同名称的函数,此时如果只是通过函数名来调用,解释器就无法知道到底要调用哪个函数。所以如果像上述这样引入模块的时候,调用函数必须要加上模块名。

    import math
    
    #这样会报错
    print sqrt(2)
    
    #这样才能正确输出结果
    print math.sqrt(2)

        

        有时候我们只需要用到模块中的某个函数,只需要引入该函数即可,此时可以以下方法实现

    from  模块名 import 函数名1,函数名2...

        不仅可以引入函数,还可以引入一些变量

        注意:

        通过这种方式引入的时候,调用函数时只能给出函数名,不能给出模块名,当时当两个模块中含有相同名称函数的时候,后面一次引入会覆盖前一次引入。也就是说假如模块A中有函数function(),在模块b中也有函数function(),如果引入a中的function在线,b中的function在后,那么当调用function函数的时候,是去执行模块b中的function函数、

        如果想一次性引入math中所有的东西,还可以通过from math import*来实现;但是不建议这样操作。

        

       from...import

       python的from语句让你从模块中导入一个指定的部分到当前命名空间中。

       语法如下:

    from  modname import name1[, name2[,...name]]

       例如,要导入模块fib的fibonacci函数,使用如下语法:

    from fib
     import fibonacci

       这个声明不不会把整个fib模块导入到当前的命名空间中,它只会将fib里的fibonacci单个引入

       from....import *

        把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明:

    from modname import *

        这样提供了一个简单的方法来导入一个模块中的所有项目。然而这种声明不该过多的被使用

        定位模块

        当你导入一个模块,python解释器对模块位置的搜索顺序是:

        1.当前目录

        2.如果不在当前目录,python则搜索在shell变量PYTHONPATH的每个目录。

        3.如果都找不到,pytho会查看默认路径。unix系统下,路径一般默认为 /usr/local/lib/python/

        4.模块搜索路径存储在system模块的sys.path变量中,变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。

  • 相关阅读:
    GitHub挂载网站
    JS中用execCommand("SaveAs")保存页面兼容性问题解决方案
    使用List,Dictionary加载数据库中的数据
    模拟在table中移动鼠标,高亮显示鼠标所在行
    ASP.NET AutoCompleteType 属性,这么多年的IT人你发现了吗?
    生成流水号
    在数据库中查找字符串(不知道表名的情况下 查找字符串)
    半角与全角之间的转换
    C#代码规范精简表
    有关Excel导出
  • 原文地址:https://www.cnblogs.com/FlameLuo/p/9738081.html
Copyright © 2020-2023  润新知