zoukankan      html  css  js  c++  java
  • Python day 7(1) 模块

    一:模块

    1 在Python中,一个.py文件就称之为一个模块(Module)

    2 Python的好处,优点:

         a  提高了代码的可维护性

         b  当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。

    3  使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中。但是也应该注意:函数名和变量名尽量不要与内置函数名字冲突。

    4  为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。

    1 mycompany
    2 ├─ __init__.py
    3 ├─ abc.py
    4 └─ xyz.py


    引入了包以后,只要顶层的包名不与别人冲突,那所有模块都不会与别人冲突。现在,abc.py模块的名字就变成了mycompany.abc,类似的,xyz.py的模块名变成了mycompany.xyz
    每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,而它的模块名就是mycompan(init左右都是2个下划线)

    5     类似的,可以有多级目录,组成多级层次的包结构。比如如下的目录结构:

    1 mycompany
    2  ├─ web
    3  │  ├─ __init__.py
    4  │  ├─ utils.py
    5  │  └─ www.py
    6  ├─ __init__.py
    7  ├─ abc.py
    8  └─ xyz.py

    文件www.py的模块名就是mycompany.web.www

    6   自己创建模块时要注意命名,不能和Python自带的模块名称冲突。例如,系统自带了sys模块,自己的模块就不可命名为sys.py,否则将无法导入系统自带的sys模块。最好先查看系统是否已存在该模块,检查方法是在Python交互环境执行import abc,若成功则说明系统存在此模块。

    二:使用模块

    1 #!/usr/bin/env python3
    2 # -*- coding: utf-8 -*-
    3 
    4 ' a test module '
    5 
    6 __author__ = 'Michael Liao'
     

    第1行和第2行是标准注释,第1行注释可以让这个hello.py文件直接在Unix/Linux/Mac上运行,第2行注释表示.py文件本身使用标准UTF-8编码;

    第4行是一个字符串,表示模块的文档注释,任何模块代码的第一个字符串都被视为模块的文档注释;

    第6行使用__author__变量把作者写进去,这样当你公开源代码后别人就可以瞻仰你的大名;

    以上就是Python模块的标准文件模板。

    2  sys模块有一个argv变量,用list存储了命令行的所有参数。argv至少有一个元素,因为第一个参数永远是该.py文件的名称。

    3  import hello   hello.test()

       a  导入模块:import  模块名    或者 import 模块名  as 新模块名(这种方法适用于模块名太长,调用或者使用不方便时的重命名)

       b  导入指定的模块属性 :from 模块名  import  属性1,2,3,4......   eg:from  ch6_1  import count,print.

    4  在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用。在Python中,是通过_前缀来实现的。

       a  正常的函数和变量名是公开的(public),可以被直接引用,比如:abcx123PI等;

       b  类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如上面的__author__。我们自己的变量一般不要用这种变量名。

       c   类似_xxx__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc__abc等。

       d   外部不需要引用的函数全部定义成private,只有外部需要引用的函数才定义为public。

    5  模块的搜索路径:

       a   当我们试图加载一个模块时,Python会在指定的路径下搜索对应的.py文件,如果找不到,就会报错。

       b   默认情况下,Python解释器会搜索当前目录、所有已安装的内置模块和第三方模块,搜索路径存放在sys模块的path变量中。

    1 >>> import sys
    2 >>> sys.path
    3 ['', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python36.zip', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6', ..., '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages']

    c
    如果我们要添加自己的搜索目录,有两种方法:

        一是直接修改sys.path,添加要搜索的目录:

    
    
    1 >>> import sys
    2 >>> sys.path.append('/Users/michael/my_py_scripts')
    
    
    
    
    

        这种方法是在运行时修改,运行结束后失效。

       二是设置环境变量PYTHONPATH,该环境变量的内容会被自动添加到模块搜索路径中。设置方式与设置Path环境变量类似。注意只需要添加你自己的搜索路径,Python自己本身的搜索路径不受影响。

      

     

       

  • 相关阅读:
    Coolpy程序安装教程
    Coolpy使用注意事项以及常见问题解决办法(持续更新中)
    自备百度地图API密钥 解决Cooply“地图API未授权”问题
    如何在很大数量级的数据中(比如1个亿)筛选出前10万个最小值?之八
    如何在很大数量级的数据中(比如1个亿)筛选出前10万个最小值?之七
    如何在很大数量级的数据中(比如1个亿)筛选出前10万个最小值?之六
    如何在很大数量级的数据中(比如1个亿)筛选出前10万个最小值?之六
    如何在很大数量级的数据中(比如1个亿)筛选出前10万个最小值?之五
    如何在很大数量级的数据中(比如1个亿)筛选出前10万个最小值?之四
    如何在很大数量级的数据中(比如1个亿)筛选出前10万个最小值?之三
  • 原文地址:https://www.cnblogs.com/woshihuihui/p/8232631.html
Copyright © 2011-2022 走看看