当前位置:  开发笔记 > 编程语言 > 正文

将参数传递给timeit.Timer()函数时棘手的Python字符串文字

如何解决《将参数传递给timeit.Timer()函数时棘手的Python字符串文字》经验,为你挑选了1个好方法。

我在Python的timeit.Timer(stmt,setup_stmt)中使用setup语句很难.我感谢任何帮助,让我摆脱这个棘手的问题:

所以我的sniplet看起来像这样:

def compare(string1, string2):
    # compare 2 strings

if __name__ = '__main__':
    str1 = "This string has \n several new lines \n in the middle"
    str2 = "This string hasn't any new line, but a single quote ('), in the middle"

    t = timeit.Timer('compare(p1, p2)', "from __main__ import compare; p1=%s, p2=%s" % (str1,str2))

我不知道如何在变量str1,str2中转义元字符而不改变它们在setup语句中的含义:

"from __main__ import compare; p1=%s, p2=%s" % (str1,str2)

我尝试了各种组合,但总是有以下错误:SyntaxError:
扫描单引号字符串时无法分配给文字
语法错误:EOL 语法错误:语法无效



1> S.Lott..:

考虑这是另一种选择.

t = timeit.Timer('compare(p1, p2)', "from __main__ import compare; p1=%r; p2=%r" % (str1,str2))

%r使用的字符串,它是由Python会引用正确逃脱再版.

编辑:修改代码通过将逗号更改为分号; 错误现在消失了.

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有