控制流问题:已调用但未执行的Python函数

时间:2019-06-21 02:09:28

标签: python control-flow

我遇到了我一生中遇到的最奇怪的问题。

我的部分代码如下:


class AzureDevOpsServiceError(Exception):
    pass


skip = ["auto"]


def retrieve_results():
    print(variable_not_defined)
    ... # some useful implementation


if not "results" in skip:
    try:
        print("before")
        retrieve_results()
        print("after")
    except AzureDevOpsServiceError as e:
        print(f"Error raised: {e}")

显然,这会引发错误,因为variable_not_defined尚未定义。

但是,由于某些奇怪的原因,代码可以正确执行并打印

before
after

我尝试使用参数(retrieve_results(1234)或在函数中添加参数(def retrieve_results(arg1)retrieve_results())调用该函数:两种修改都会触发异常,因此显然该函数被调用。

任何人都有类似的问题,知道会发生什么吗?

仅供参考:这实际上就是我的实现方式:

from azure.devops.exceptions import AzureDevOpsServiceError
import logging


def _retrieve_manual_results(connect: Connectivity, data: DataForPickle) -> None:
    """Retrieve the list of Test Results"""
    print("G" + ggggggggggggggggggggggggggggggggggggg)
    logger = connect.logger

    data.run_in_progress = [165644]

if __name__ == "__main__":
    p = ...
    connect = ...
    data = ...

    if not "results" in p.options.skip:
        try:
            print("........B.........")
            _retrieve_manual_results(connect, data)
            print("........A.........")
        except AzureDevOpsServiceError as e:
            logging.error(f"E004: Error while retrieving Test Results: {e}")
            logging.debug("More details below...", exc_info=True)

1 个答案:

答案 0 :(得分:0)

如@gmds所强调的,这是一个缓存问题。

删除 .pyc 文件没有多大作用。

但是,我找到了解决方法:

  1. 重命名功能(例如添加_
  2. 运行程序
  3. 重命名(即删除上一个示例中的_

现在,问题已解决。

如果有人知道幕后发生的事情,我会很感兴趣。