-
-
Notifications
You must be signed in to change notification settings - Fork 32.4k
Closed
Labels
performancePerformance or resource usagePerformance or resource usagestdlibPython modules in the Lib dirPython modules in the Lib dir
Description
Current code:
def indent(text, prefix, predicate=None):
"""Adds 'prefix' to the beginning of selected lines in 'text'.
If 'predicate' is provided, 'prefix' will only be added to the lines
where 'predicate(line)' is True. If 'predicate' is not provided,
it will default to adding 'prefix' to all non-empty lines that do not
consist solely of whitespace characters.
"""
if predicate is None:
def predicate(line):
return line.strip()
def prefixed_lines():
for line in text.splitlines(True):
yield (prefix + line if predicate(line) else line)
return ''.join(prefixed_lines())
predicate = str.strip
is faster thandef predicate(line)
''.join(x)
converts input iterable to sequence. Using generator just makes overhead.- creating temporary
prefix + line
is avoidable.
Linked PRs
gh640
Metadata
Metadata
Assignees
Labels
performancePerformance or resource usagePerformance or resource usagestdlibPython modules in the Lib dirPython modules in the Lib dir