现在的位置: 首页 > 编程语言 > 正文

python,module,package,map,filter

2019年04月01日 编程语言 ⁄ 共 1360字 ⁄ 字号 评论关闭

      前段时间都是在用java,就没有用python了,发觉很多基本的概念都忘记了,又看了书和api,现在写写这几天的总结:

       module
       1.模块就是xxx.py这个文件,而模块的名称就是xxx
       2.如果我的其他模块需要导入这个模块,首先要import xxx,然后还要让python解释器可以找到这个模块的源代码,这就需要用几个方法告诉python解释器
          方法一:sys.path.append()  直接将这个模块的地址加到sys.path中
          方法二:在python2中可以放到site-packages这个目录中,python3的话我在看下这个目录在哪
          方法三:就是在PYTHONPATH坏境变量中包含这个模块所在的目录,在linux中,环境变量是~.bashrc这个文件中定义的,可以使用语句
          export PYTHONPATH=$PYTHONPATH:~/python  这语句就可以将~/python加到环境变量 也就是/home/lee/python这个目录
          此外,目测当前模块的当前目录也是在PATHONPATH中的

        package
        1.包和Java中的一样就是一个放module的文件夹,java中是放class的,必须有__init__.py在这个包中,也就是在这个文件夹中它才是包
        2.包也是模块,我要是直接import package1导入的就是__init__.py中的变量,函数和类,用package1.classname就可以访问了
        3.一定要注意我导入包这个模块的时候,那几种导入方式,假设 package1中有A.py,B.py,__init__.py这三个模块
         import package1        --->只导入了__init__.py
         import package1.A      --->导入了A,但是只能 package1.A调用这个A模块
         form package1 import B --->导入了B,直接是用B模块
         form package1 import * --->导入了package1中__all__这个列表中的变量,函数,类
        4.查看模块内容  dir(copy)   查看copy模块的源代码的位置  copy.__file__

         fileter and map
        1.filter和map都可以用列表表达式来用
           如 def fileterFun(x) : return not x.startswith('_')
                def mapFun(x): return x+1
                fileter(filterFun,dir(copy)=======[x for x in dir(copy) if x not startswith('_')]
                map(mapFun,range(10))=======map(lambda x: x+1,range(10))======[x+1 for x in range(10)] 
         2.filter和map都是函数式编程,都是返回类似生成器的对象,要是想使用它需要list()这个方法,此外只有被真正使用的时候才会运行这个函数,类似延迟加载

抱歉!评论已关闭.