zoukankan      html  css  js  c++  java
  • 模块

      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和由安装过程决定的默认目录。

  • 相关阅读:
    asp.net core 3.1 源码学习(二)
    asp.net core 3.1 源码学习(一)
    netcore3.0 IHost 源码解析(二)
    netcore3.0 IHost 源码解析(一)
    netcore3.0 Logging 日志系统(三)
    netcore3.0 Logging 日志系统(二)
    netcore3.0 Logging 日志系统(一)
    netcore3.0 IOptions 选项(二)
    Nginx使用记录
    SC Create 创建一个Windows系统服务 转
  • 原文地址:https://www.cnblogs.com/FlameLuo/p/9738081.html
Copyright © 2011-2022 走看看