zoukankan      html  css  js  c++  java
  • 模块

    在计算机程序开发过程中,随着程序代码越来越多,在一个文件里的代码越来越多,越来越不容易维护

    为了编写可以维护的代码,我们把很多模块分组,分别放在不同的文件里,这样每个文件里面包含的代码就相对的少

    在Python中,每个.py就是一个模块(module)

    优点

    1. 提高了代码的可维护性
    2. 每个模块都是可重用的
    3. 避免函数名和变量名冲突

    模块分为三类

    1. 内置模块
    2. 第三方模块
    3. 自定义模块

    导入模块

    #导入xxx模块
    import xxx
    
    #从xxx导入xx
    from xxx import xx
    
    #起别名x
    from xxx import xx as x
    
    #将xxx模块全部导入,调用时不需要xxx.了(不推荐使用)
    from xxx import * 

    安装第三方模块

    pip install xxx

    卸载第三方模块

    pip uninstall xxx

    默认会使用python官方服务器下载,速度比较慢,可以改用国内的源

    (从豆瓣安装并将该网址信任)

    pip install -i http://pypi.douban.com/simple xxx --trusted-host pypi.douban.com

    当你的模块越来越多,就需要对模块进行划分,根据不同的功能分为多个目录,一个目录管理多个模块文件,这个目录称为包

    包里面应该有一个__init__.py文件,用于告诉python解析器这是一个包,

    示例

    #文件路径
    
    imports
        ---text
            ---__init__.py
            ---text1.py
        ---proj
            ---__init__.py
            ---proj1.py
        ---模块.py

    在模块.py中导入text1.py文件

    from text import text1

    在text1.py中导入proj.py文件

    import sys
    print(sys.path).   #打印python的环境变量,第一个''是当前目录
    
    sys.path.append('/Users/sunlizhao/PycharmProjects/imports')    #将目录路径写入到环境变量中(当前文件有效)
    
    print(sys.path)

    现在就可以在text1.py中导入proj.py文件了

    from proj import proj1.py

    但是这样就把路径给写死,如果项目更换平台就会报错

    获取当前文件路径

    print(__file__)
    #/Users/sunlizhao/PycharmProjects/imports/text/text1.py

    但是我们只想获取到imports目录这一层

    import sys,os
    BASE_DIR = os.path.dirname(os.path.dirname(__file__))
    print(BASE_DIR)
    
    #/Users/sunlizhao/PycharmProjects/imports

    发现这样就向上了两层目录

    然后将目录添加到环境变量

    sys.path.append(BASE_DIR)
    print(sys.path)

    这样在pycharm中成功了,但是在终端中很可能会失败,找了一下原因__file__还不是绝对路径

    import sys,os
    
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    sys.path.append(BASE_DIR)
    
    from proj import proj1 

    相对路径(路径关系比较严格,不常用)

    相对路径往上翻不能到程序的目录,在这个例子中,就是不能到imports目录

    这样就需要重新更改一下目录结构

    imports
        ---tete
            ---text
                ---__init__.py
                ---text1.py
            ---proj
                ---__init__.py
                ---proj1.py
        ---模块.py

    在text1.py中导入proj1.py文件

    from ..proj import proj1
  • 相关阅读:
    被Play framework狠狠的play了一把
    ant导入Zookeeper到Eclipse错误path contains invalid character
    Hadoop2.4代码的坑
    uml类关系
    Hadoop 源码编译导出
    Eclipse 导入 Hadoop 源码
    js中的prototype和constructor
    react之路:使用redux-immutable
    react之路:使用actionCreators和constants
    react之路:使用combineReducers拆分reducer
  • 原文地址:https://www.cnblogs.com/sunlizhao/p/9229454.html
Copyright © 2011-2022 走看看