timeit 模块中的 Unicode 转义错误 python

Unicode Escape Error in timeit module python

我目前正在使用 python 的 timeit 内置库来获取小代码片段的执行时间。

我的代码:-

import timeit

print(timeit.timeit(setup='env = "C:\Users\MyName"', stmt='a = f"{env} is my username"'))

以上代码执行后产生Unicode Escape Error.

错误堆栈:-

Traceback (most recent call last):
  File "D:/Users/apple/vul.py", line 3, in <module>
    print(timeit.timeit(setup='env = "C:\Users\MyName"', stmt='a = f"{env} is my username"'))
  File "C:\Users\apple\AppData\Local\Programs\Python\Python37-32\lib\timeit.py", line 232, in timeit
    return Timer(stmt, setup, timer, globals).timeit(number)
  File "C:\Users\apple\AppData\Local\Programs\Python\Python37-32\lib\timeit.py", line 109, in __init__
    compile(setup, dummy_src_name, "exec")
  File "<timeit-src>", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

当字符串中存在转义序列解释(通过单个 \ 后跟一个字符)时,通常会产生此错误。但就我而言,我已经使用 \(double backslashes).

转义了字符串中的反斜杠

您已正确诊断出问题:字符串中的转义序列解释。

您已经转义了一次反斜杠。这意味着 timeit 在其 setup 参数中接收以下字符串:'env = "C:\Users\MyName"' 每次出现时都有一个 \。当它执行字符串时,它发现它认为是一个有问题的 Unicode 序列:'\Users'.

很容易修复:

print(timeit.timeit(setup=r'env = "C:\Users\MyName"', stmt='a = f"{env} is my username"'))