2015-03-26 1 views
0

Je passe par le code suivant, et je suis confus au sujet de options.plugins = [ ".*py$" ], Pourquoi avons-nous mis une reg-exp dans une liste en python, comme ceci [". ​​* 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$" ] 
+3

C'est une liste avec une chaîne à l'intérieur. – Ffisegydd

+0

Liste avec un élément, une chaîne, qui se trouve être une expression régulière. –

+0

Merci pour votre aide, mais pourriez-vous expliquer cela plus en détail? ou pourriez-vous partager un lien ou un article pour l'introduire plus en détail, j'ai essayé de trouver de l'aide sur https://docs.python.org/2/library/optparse.html, mais il semble qu'il n'y ait pas d'informations détaillées à ce sujet. – phoenix

Répondre

0

En Python, la syntaxe []denotes a list, similaire à la syntaxe de tableau dans de nombreuses autres langues. Dans ce cas, ce que vous voyez est juste une liste qui contient la chaîne ".*py$".

Si vous regardez la quatrième ligne de votre code, une option -p ou --plugins est en cours de création qui sera, par la documentation:

prendre l'argument suivant (ou le reste de l'argument actuel), assurez-vous qu'il est du bon type et conservez-le à la destination choisie.

Dans ce cas, la destination spécifiée est, comme vous le verrez, "plugins" - d'où options.plugins. Plus bas, ce qui se passe est que le code vérifie si le options.plugins n'existe pas ou est vide. Si c'est le cas, il est défini sur une liste contenant une chaîne "option", qui semble être une expression régulière.

La documentation que j'ai trouvée sur optparse ne donne pas beaucoup d'informations sur ce que vous attendez que vous fournissiez à options.plugins. Cependant, d'une manière générale, la réponse à ce genre de question de «pourquoi j'attribue X à Y» lorsque vous travaillez avec une bibliothèque externe est simplement que c'est l'entrée que vous êtes censé fournir lorsque vous travaillez avec cette bibliothèque particulière. Sans aucun autre contexte pour ce code, il est difficile d'en dire beaucoup plus que ça.

+0

Salut, merci pour votre aide et explication détaillée, désolé pour ma mauvaise description de la question qui vous fait mal comprendre ce que je confonds, maintenant, je sais que "[". * Py $ "] 'est la liste avec un membre, et le membre est un reg-exp, mais je ne l'ai jamais vu mettre une reg-exp dans une liste, et dans ce code, nous avons mis le reg-exp dans une liste, je veux savoir pourquoi le codeur écrit de cette façon ? le codeur fait un reg-exp en tant que membre de liste ici pour résoudre quel problème? quel est le but ? @sphanley – phoenix

+0

Malheureusement, la documentation ne semble pas décrire l'utilisation de 'options.plugins', et à moins de demander à la personne qui a écrit ce code tout ce que je peux faire est de spéculer. Je suppose, cependant, que 'options.plugins' attend une liste de chaînes, peut-être chacune spécifiant un plugin à utiliser? Sans plus de contexte pour le code, je ne peux pas vraiment en dire plus, peut-être que quelqu'un de plus familier avec le Python OptionParser passera et en saura plus. –

+0

peut-être je devrais envoyer le codeur, de toute façon, merci pour votre aide et instruction – phoenix