2012-03-09 15 views
27

Mi piacerebbe avere un elenco di tutte le parole chiave Python come stringhe. Sarebbe anche piuttosto elegante se potessi fare una cosa simile per le funzioni incorporate.È possibile ottenere un elenco di parole chiave in Python?

Qualcosa di simile a questo:

import syntax 
print syntax.keywords 
# prints ['print', 'if', 'for', etc...] 
+1

Cosa stringa ci si può aspettare in questa lista per istruzioni di assegnazione? O per dichiarazioni di espressione? O preferisci un elenco di tutte le parole chiave? –

+4

In ogni caso: consultare la documentazione del linguaggio Python: [dichiarazioni semplici] (http://docs.python.org/reference/simple_stmts.html), [istruzioni Compund] (http://docs.python.org/reference/compound_stmts. html) e [Parole chiave] (http://docs.python.org/reference/lexical_analysis.html#keywords). –

+1

Potrebbe fornire qualche background per il motivo per cui è necessario? –

risposta

53

hai chiesto dichiarazioni, pur mostrando parole chiave nella vostra esempio di output.

Se siete alla ricerca di parole chiave , sono tutti elencati nel modulo keyword:

>>> import keyword 
>>> keyword.kwlist 
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 
'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 
'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 
'while', 'with', 'yield'] 

Dal keyword.kwlist doc:

sequenza contenente tutte le parole chiave definite per l'interprete . Se alcune parole chiave sono definite per essere attive solo quando sono in vigore determinate istruzioni __future__, anche queste saranno incluse.

+0

Non ho postato questa risposta dal momento che l'OP chiedeva "dichiarazioni", non "parole chiave", sebbene sia possibile che questa sia la risposta che l'OP sta cercando. –

+0

Questo funzionerà per i miei scopi, grazie! – rectangletangle

+0

TBH Ho solo guardato il suo esempio e non l'ho nemmeno notato. Tutti i 'print',' for' e 'if' sono nella lista qui sopra, quindi ... In ogni caso metto un avvertimento nella risposta per gli utenti a venire. –

8

Le funzioni incorporate sono in un modulo chiamato __builtins__, quindi:

dir(__builtins__) 
+0

Se questo codice è in un modulo importato, penso che sarebbe invece '__builtins __. Keys()'. O in Python 3, 'import builtins' quindi' dir (builtins) 'indipendentemente dal modulo. https://docs.python.org/3/reference/executionmodel.html "Per impostazione predefinita, quando nel modulo' __main__', '__builtins__' è il modulo incorporato' builtins', quando in qualsiasi altro modulo, '__builtins__ 'è un alias per il dizionario del modulo' builtins' stesso. " –

4

L'approccio più vicino mi viene in mente è la seguente:

from keyword import kwlist 
print kwlist 

Il modulo standard keyword viene generato automaticamente. Per altre cose relative all'analisi di Python da Python, controlla il set di moduli language services.

Per quanto riguarda l'elenco delle builtins Io non sono chiare se stai chiedendo per gli elementi nel modulo __builtin__ o funzioni in quel pacchetto che vengono implementati direttamente nell'interprete CPython:

import __builtin__ as B 
from inspect import isbuiltin 

# You're either asking for this: 
print [name for name in dir(B) if isbuiltin(getattr(B, name))] 

# Or this: 
print dir(B) 
1

>>> help()

aiuto> parole chiave

Ecco un elenco delle parole chiave Python. Inserisci una parola chiave per ottenere ulteriore assistenza.

False def if raise

None del import return

True elif in try

and else is while

as except lambda with

assert finally nonlocal yield

break for not

class from or

continue global pass

Problemi correlati