假设我有一个硬编码的函数来使子字符串小写,当在较大的字符串中找到该子字符串的实例时,例如:
def process_record(header, needle, pattern):
sequence = needle
for idx in [m.start() for m in re.finditer(pattern, needle)]:
offset = idx + len(pattern)
sequence = sequence[:idx] + needle[idx:offset].lower() + sequence[offset:]
sys.stdout.write('%s\n%s\n' % (header, sequence))
这工作正常,例如:
>>> process_record('>foo', 'ABCDEF', 'BCD')
>foo
AbcdEF
我想要做的是概括这一点,传入一个字符串函数(lower在这种情况下,但它可以是原始类型或类的任何函数)作为参数。就像是:
def process_record(header, needle, pattern, fn):
sequence = needle
for idx in [m.start() for m in re.finditer(pattern, needle)]:
offset = idx + len(pattern)
sequence = sequence[:idx] + needle[idx:offset].fn() + sequence[offset:]
sys.stdout.write('%s\n%s\n' % (header, sequence))
这不起作用(这就是我问这个问题的原因),但希望这能证明这个想法,尝试以一种可读的方式概括函数的作用。
我认为的一种选择是编写一个辅助函数来包装stringInstance.lower()和传递字符串的副本,这是低效且笨拙的。我希望有一种 Python 专家知道的更优雅的方法。
例如,使用 C 时,我会将指向要作为参数process_record()运行的函数的指针传递给,并直接在感兴趣的变量上运行函数指针。
在 Python 中使用字符串原始函数(或类似的原始类或其他类)时,执行相同操作的语法是什么?
潇潇雨雨
相关分类