zoukankan      html  css  js  c++  java
  • Python运行的添加环境变量,执行一个Python文件的或者导入模块的时候,执行的逻辑。

    这是简书的一个参考链接:https://www.jianshu.com/p/178c26789011

    作者写的蛮不错的。

    抬头就有非常重要的一段语录,我复制了下来。

    package的初始化工作

    一个package 被导入,不管在什么时候__init__.py的代码都只会被执行一次

    >>> import package
    hello world
    >>> import package
    >>> import package
    

    由于 package 被导入时 __init__.py 中的可执行代码会被执行,所以小心在 package 中放置你的代码,尽可能消除它们产生的副作用,比如把代码尽可能的进行封装成函数或类。

    __init__.py内的导入顺序

    当我尝试导入

    from package import something
    

    import语句会首先检查something是不是__init__.py的变量,然后检查是不是subpackage,再检查是不是module,最后抛出ImportError

    所以检查顺序如下:

    1. __init__.py 文件内变量
    2. 是不是package内的subpackage
    3. 是不是package内的module


    Python的环境变量,就是Python在运行的时候,添加模块的一系列路径,用于导入模块的时候,需要查找的模块的相对起始路径。

    首先给自己强调一点,Python在运行的时候,通过主文件运行,[无论是python xxx.py或者python abc/ccc/xxx.py]Python解释器会自动把该模块运行的目录添加到环境变量中,而且还目录具有第一优先级

    也就是说,在导入模块的时候,项目下的模块导入具有第一优先级。

    后面写一些自己的感受。

    当我们在运行一个Python项目,首先需要一个启动模块,也就是启动文件。这个跟计算机系统的运行原理差不多,一个进程的启动,必须由父进程来辅助其启动。

    运行环境相对还是比较简单,就是一些绝对路径,模块的话相对比较复杂一些。

  • 相关阅读:
    动词 + to do、动词 + doing
    图像直线检测——霍夫线变换
    x=min(x, y)
    x=min(x, y)
    算法 Tricks(三)—— 数组(序列)任意区间最小(大)值
    算法 Tricks(三)—— 数组(序列)任意区间最小(大)值
    分治法求解切割篱笆
    分治法求解切割篱笆
    GMM的EM算法实现
    秒杀多线程第二篇 多线程第一次亲热接触 CreateThread与_beginthreadex本质差别
  • 原文地址:https://www.cnblogs.com/sidianok/p/14696037.html
Copyright © 2011-2022 走看看