• Python语言学习:模块


    一、模块

    1. 模块(Module):以.py结尾的文件,包含python对象定义和python语句。使代码段更容易理解和使用。

                                      模块分为两种:标准库(直接导入的库)和第三方库(需要下载安装的库)。

    2. 模块的引入

    a. import语句:当解释器遇到import语句,如果模块在当前的搜索路径就会被导入。搜索路径是一个解释器会先进行搜索的所有目录的列表。

                             如果想要导入模块support.py,需要把命令放在脚本的顶端。

    import module
    例如:import sys

     b.from...import语句:从模块中导入一个指定的部分到当前命名空间中。

    from modname import name

    c.from...import * 语句:把一个模块的所有内容全部导入到当前的命名空间也是可行的

    from modname import *
    

    3.索引路径:当导入一个模块,python解析器对模块位置的搜索顺序如下:

    a.当前目录

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

    c.如果还找不到,python会察看默认路径,Unix下,默认路径是/usr/local/lib/python/

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

    4. PYTHONPATH变量:作为环境变量,PYTHONPATH由装在一个列表里的许多目录组成。PYTHONPATH的语法和shell变量PATH一样。

     a. 在windows系统,典型的PYTHONPATH如下:

    set PYTHONPATH= c:python27in;
    具体看安装的默认路径
    

     b.在Unix系统,典型的PYTHONPATH如下:

    set PYTHONPATH = /usr/local/lib/python
    具体看安装的默认路径
    

      

    5.命名空间和作用域

    a. 变量是拥有匹配对象的名字(标识符)。

        命名空间是一个包含了变量名称(键)和它们各自相对应的对象(值)的字典。

        一个python表达式可以访问局部命名空间和全局命名空间里的变量。如果一个局部变量和全局变量重名,则局部变量会覆盖全局变量。

        每个函数都有自己的命名空间。类的方法的作用域规则和通常函数一样。

        python会智能的猜测一个变量是局部还是全局。它假设任何函数内赋值的变量都是局部的。因此,如果给函数内的全局变量赋值,需要使用到global语句。这个语句会告诉python这个变量是全局变量。

        如果不给函数的变量前加global,那么久会报UnboundLocalError的错误,如下:

    # Author:Crystal
    #!/usr/bin/env python
    Money = 2000
    def AddMoney():
      # 需要加入global Money这个声明,python才知道以下这个Money和上面定义的局部变量Money不同,这个是全局变量Money Money = Money +1 #UnboundLocalError: local variable 'Money' referenced before assignment print (Money) AddMoney() print (Money)

      

    6. dir()函数:一个排好序的字符串列表,内容是一个模块里定义过的名字

    #! /usr/bin/evn python
    
    import math     #导入内置math模块
    content = dir(math)
    print (content) 

    备注:特殊字符串变量_name_指向模块的名字,_file_指向该模块的导入文件名

    7.globals()和locals()函数:可被用来返回全局和局部命名空间里的名字。

       如果在函数内部调用locals(),返回的是所有能在该函数里访问的命名

       如果在函数内部调用globals(),返回的是所有在该函数里能访问的全局名字

       两个函数的返回类型都是字典。所以名字们能用key()函数摘取

    8. reload()函数:重新导入之前顶层的代码进行执行的操作。

    reload(module_name)
    

      

      9. python中的包:是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的python的应用环境。

                                   简单来说,包就是文件夹,但该文件夹下必须存在_init_.py文件,该文件的内容可以为空。_init_.py用于标识当前文件夹是

                                   一 个包。包由类组成,类是一个文件中放置很多函数组成。

    10. 模块例子:

    # Author:Crystal
    #! /usr/bin/env python
    
    '''import sys
    #print(sys.path)    #path是打印环境变量
    print(sys.argv)    #argv打印绝对路径
    
    import os
    #cmd_res= os.system("dir")    #os.system只是执行命令,不保存结果
    cmd_res= os.popen("dir").read()   #os.popen可以执行命令并保存结果,read()是将结果读取出来
    print(cmd_res)
    os.mkdir("new_dir")     #os.mkdir增加新的文件夹'''
    
    import login       #调用同一个目录下的文件,如果调用的文件和此文件不在同一个目录,就把被调用的文件放置在第三方库的目录下进行调用
    

     

    部分内容摘录自菜鸟课程:https://www.runoob.com/python/

  • 相关阅读:
    js判断手机或Pc端登陆.并跳转到相应的页面
    短信接口的使用
    sql替换
    jQuery 双击事件(dblclick)
    attr 和 prop 的区别
    如何获得select被选中option的value和text
    微信公众号基本配置
    关闭当前界面
    oninput、onchange与onpropertychange事件的区别, 与input输入框实时检测
    thinkphp5 与 endroid 二维码生成
  • 原文地址:https://www.cnblogs.com/heiqiuxixi/p/12245312.html
Copyright © 2020-2023  润新知