Is it possible to get a list of keywords in Python?
Solution 1
You asked about statements, while showing keywords in your output example.
If you're looking for keywords, they're all listed in the keyword
module:
>>> 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']
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.
Solution 2
The built-in functions are in a module called __builtins__
, so:
dir(__builtins__)
Solution 3
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)
Solution 4
Or 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
Solution 5
>>> help()
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
rectangletangle
Updated on May 26, 2020Comments
-
rectangletangle about 4 years
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...]
-
S. Kirby about 8 yearsIf this code is in an imported module, I think it would be
__builtins__.keys()
instead. Or in Python 3,import builtins
thendir(builtins)
regardless of module. docs.python.org/3/reference/executionmodel.html "By default, when in the__main__
module,__builtins__
is the built-in modulebuiltins
; when in any other module,__builtins__
is an alias for the dictionary of thebuiltins
module itself." -
Marius Mucenicu about 5 yearsBuilt-in functions are NOT statements. A statement is when you make a declaration such as defining a function and begining with the keyword
def
and have one or more clauses, etc. He asked about the built-in identifiers NOT about statements as you indicated. From his output onlyif
andfor
are keywords,print
is just a built-in identifier. Also the example is not complete because you're only listing the keywords without listing the built-in identifiers (functions) as he asked. I think you should amend the answer to include those as well. -
Marius Mucenicu about 5 yearsAlso you should make the answer even more granular if you'd want it to be complete because
print
means different things in Python2 and in Python3. In Python3 it won't show up as it does in your example because, as I've indicated in my aforementioned answer, it's not a keyword anymore (but merely a built-in identifier). Also, since he asked about the built-in functions, these need to be included. Now, I know this thread has been here for quite some time but this might help future readers. -
defoe about 5 yearsWhy do new, init, self, cls, etc. are missing, and how to list them too?