为什么我们把一个正则表达式放在python的列表中,比如这个[“。* py $”]?

时间:2015-03-26 13:00:39

标签: python-2.7 optparse

我正在浏览以下代码,我对options.plugins = [ ".*py$" ]感到困惑,为什么我们在python的列表中放入一个reg-exp,就像这个[“。* py $”]?

def main():
    parser = OptionParser()
    parser.add_option("-d", "--dist-logging", dest="dist_logging", help="use distributed logging", action="store_true", default=False)
    parser.add_option("-p", "--plugins", action="append", dest="plugins", help="a reg-exp of the plugins to load", metavar=".*py$")
    (options, args) = parser.parse_args()

initialize_logging(options.dist_logging)

if not options.plugins or len(options.plugins) == 0:
    options.plugins = [ ".*py$" ]

1 个答案:

答案 0 :(得分:0)

在Python中,[]语法denotes a list,类似于许多其他语言中的数组语法。在这种情况下,您所看到的只是一个包含字符串".*py$"的列表。

如果您查看代码的第四行,则会根据documentation创建-p--plugins选项:

  

获取下一个参数(或当前参数的其余部分),确保它的类型正确,并将其存储到您选择的目的地。

在这种情况下,指定的目的地是,正如您所见,"插件" - 因此options.plugins。再往下,发生了什么,代码正在检查options.plugins是否存在或是否为空。如果是,则将其设置为包含一个"选项"的列表。字符串,似乎是正则表达式。

我在optparse上找到的文档并未提供有关它希望您向options.plugins提供的内容的大量信息。但是,一般来说,这类问题的答案是"为什么我要将X分配给Y"使用外部库时,只需要提供您在使用该特定库时预期提供的输入。没有任何其他上下文的代码,很难说比它更多。