控制流问题:Python 函数已调用但未执行
Control Flow issue: Python function called but not executed
我遇到了我一生中遇到的最奇怪的问题。
我的部分代码如下所示:
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)
正如@gmds 强调的那样,这是缓存的问题。
删除 .pyc 文件并没有多大作用。
不过,我找到了解决办法:
- 重命名函数(例如添加
_
)
- 运行 程序
- 重命名(即删除前面示例中的
_
)
现在,问题已经解决了。
如果有人知道幕后发生的事情,我非常感兴趣。
我遇到了我一生中遇到的最奇怪的问题。
我的部分代码如下所示:
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)
正如@gmds 强调的那样,这是缓存的问题。
删除 .pyc 文件并没有多大作用。
不过,我找到了解决办法:
- 重命名函数(例如添加
_
) - 运行 程序
- 重命名(即删除前面示例中的
_
)
现在,问题已经解决了。
如果有人知道幕后发生的事情,我非常感兴趣。