我有一个简单的功能,可以创建一个更快的查找集。该功能将被大量使用。现在,创建一个集合也要花费一些时间,但是这个集合在程序的生命周期中是固定的。我应该取消它的创建以便只创建一次,还是可以期望Python知道在没有我干预的情况下做很多事情?
示例:可以在下面编写函数吗?还是应该将drop_chars
的定义提升到函数之外,使其仅执行一次?
def strip_by_category(word):
drop_chars = set("abcdefg")
return "".join(c for c in word if c not in drop_chars)
str.translate
。它是一个占位符,用于显示常量集的用法。答案 0 :(得分:2)
涉及函数调用时,CPython不使用常量,因为您始终可以覆盖set
来指向另一个函数。在LOAD_CONST
条件下使用设定文字时,Python 3.2开始支持in
,但仍不分配。
如果只想创建一次集合,则可以将其设置为默认参数,并使用frozenset
来防止不必要的突变。
def strip_by_category(word, drop_chars=frozenset("abcdefg")):
return "".join(c for c in word if c not in drop_chars)