rectangletangle
rectangletangle

Reputation: 52941

Is it possible to get a list of keywords in Python?

I'd like to get a list of all of Pythons keywords as strings. It would also be rather nifty if I could do a similar thing for built in functions.

Something like this :

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

Upvotes: 39

Views: 24599

Answers (6)

Wizard
Wizard

Reputation: 22083

The standard keyword module is generated automatically (a Quine) Quine (computing)

>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
>>> len(keyword.kwlist)
33

I categorized the keywords for further reference.

keywords_33 = [
    ('file_2', ['with', 'as']),
    ('module_2', ['from', 'import']),
    ('constant_3', {'bool': ['False', 'True'], 
                    'none': ['None']}),
    ('operator_5', {'logic': ['and', 'not', 'or'],
                    'relation': ['is', 'in']}),
    ('class_1', ['class']),
    ('function_7', ['lambda', 'def', 'pass',
                    'global', 'nonlocal',
                    'return', 'yield']),
    ('loop_4', ['while', 'for', 'continue', 'break']),
    ('condition_3', ['if', 'elif', 'else']),
    ('exception_4', ['try', 'raise', 'except', 'finally']),
    ('debug_2', ['del', 'assert']),
]

Upvotes: -2

Rik Poggi
Rik Poggi

Reputation: 29302

They're all listed in the keyword module:

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

(output as of Python 3.11)

From the keyword.kwlist doc:

Sequence containing all the keywords defined for the interpreter. If any keywords are defined to only be active when particular __future__ statements are in effect, these will be included as well.

Upvotes: 73

U13-Forward
U13-Forward

Reputation: 71580

You can import builtins:

>>> import builtins
>>> dir(builtins)
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'ConnectionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundError', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionError', 'ProcessLookupError', 'RecursionError', 'ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '_', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'all', 'any', 'ascii', 'bin', 'bool', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']

OR (this does not contain errors and stuff with __ beside them):

>>> help('keywords')

Here is a list of the Python keywords.  Enter any keyword to get more help.

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                

Upvotes: 2

Sandeep_black
Sandeep_black

Reputation: 1441

>>> help('keywords')

Here is a list of the Python keywords.  Enter any keyword to get more help.

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

Upvotes: 1

C2H5OH
C2H5OH

Reputation: 5602

The closest approach I can think of is the following:

from keyword import kwlist
print kwlist

The standard keyword module is generated automatically. For other things related to Python parsing from Python, check the language services set of modules.

Regarding listing the builtins I'm not clear if you're asking for items in the __builtin__ module or functions in that package that are implemented directly in the CPython interpreter:

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)

Upvotes: 5

Greg Hewgill
Greg Hewgill

Reputation: 993095

The built-in functions are in a module called __builtins__, so:

dir(__builtins__)

Upvotes: 12

Related Questions