我使用PyCharm在Git的本地版本控制下使用相对较短的专用脚本.
直到最近,我根本没有使用版本控制.我首选的工作方法是在同一个PyCharm项目的选项卡中打开多个文件,并将它们全部独立处理.
有没有办法在同一个PyCharm窗口中对多个项目/文件使用特定于脚本的版本控制?我不完全理解PyCharm的"项目"范例,并且没有找到在独立版本控制回购下在同一窗口中打开多个项目的方法.
假设我有一个使用正则表达式在字符串中搜索多个模式的函数:
import re
def get_patterns(string):
"""
Takes a string and returns found groups
of numeric and alphabetic characters.
"""
re_digits = re.compile("(\d+)")
re_alpha = re.compile("(?i)([A-Z]+)")
digits = re_digits.findall(string)
alpha = re_alpha.findall(string)
return digits, alpha
get_patterns("99 bottles of beer on the wall")
(['99'], ['bottles', 'of', 'beer', 'on', 'the', 'wall'])
Run Code Online (Sandbox Code Playgroud)
现在假设这个函数将被调用数十万次,这不是一个简单的例子。a) 是否在函数内完成正则表达式编译是否重要,即在每次函数调用时调用编译操作是否存在效率成本(或者它是否从缓存中重用?)和 b) 如果有,会是什么避免这种开销的推荐方法?
一种方法是向函数传递已编译的正则表达式对象列表:
re_digits = re.compile("(\d+)")
re_alpha = re.compile("(?i)([A-Z]+)")
def get_patterns(string, [re_digits, re_alpha]):
Run Code Online (Sandbox Code Playgroud)
但我不喜欢这种方法如何将正则表达式与依赖函数分离。
更新:根据 Jens 的建议,我运行了一个快速的计时检查,并且在函数的默认参数中进行编译确实快了很多(~30%):
def get_patterns_defaults(string,
re_digits=re.compile("(\d+)"),
re_alpha=re.compile("(?i)([A-Z]+)")
):
"""
Takes a string and returns found groups …Run Code Online (Sandbox Code Playgroud)