2012-03-09 94 views
27

我想獲得所有Pythons關鍵字列表作爲字符串。如果我可以爲內置函數做類似的事情,那也是相當不錯的。是否有可能在Python中獲取關鍵字列表?

事情是這樣的:

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

你會在這個列表中的賦值語句有什麼期望字符串?或者用於表達式語句?或者你是否喜歡所有關鍵字的列表? – 2012-03-09 22:57:17

+4

無論如何:請參閱Python語言文檔:[Simple statements](http://docs.python.org/reference/simple_stmts.html),[Compund statements](http://docs.python.org/reference/compound_stmts。 html)和[關鍵字](http://docs.python.org/reference/lexical_analysis.html#keywords)。 – 2012-03-09 22:58:33

+1

你能提供一些背景知道爲什麼你需要這個嗎? – 2012-03-09 22:59:49

回答

53

你問到陳述,同時表現出關鍵字在輸出示例。

如果您正在尋找關鍵字,他們列出的所有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'] 

keyword.kwlist doc

序列包含解釋定義的所有關鍵字。如果任何關鍵字被定義爲只有在特定的語句生效時纔有效,那麼這些關鍵字也將包含在內。

+0

我沒有發佈這個答案,因爲OP詢問「陳述」,而不是「關鍵字」,儘管很可能這是OP正在尋找的答案。 – 2012-03-09 23:06:22

+0

這將適用於我的目的,謝謝! – rectangletangle 2012-03-09 23:07:37

+0

TBH我只是看着他的例子,甚至沒有注意到。所有的'print','for'和'if'都在上面的列表中,所以......無論如何,我會在答案中給用戶發出警告。 – 2012-03-09 23:14:14

8

內置的功能是一個叫做__builtins__模塊中,因此:

dir(__builtins__) 
+0

如果這段代碼位於導入的模塊中,我認爲它應該是'__builtins __。keys()'。或者在Python 3中,無論模塊如何,都需要'import builtins'然後'dir(builtins)'。 https://docs.python.org/3/reference/executionmodel.html「默認情況下,在'__main__'模塊中,'__builtins__'是內置模塊'builtins';當在其他模塊中時,'__builtins__ '是'builtins'模塊本身的字典的別名。「 – 2016-06-26 07:19:29

4

我能想到的最接近的是以下幾點:

from keyword import kwlist 
print kwlist 

標準keyword模塊自動生成。對於與Python從Python解析相關的其他內容,請檢查language services模塊集合。

關於上市我不清楚,如果你要求爲__builtin__模塊中的項目和功能在包在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()

幫助>關鍵字

以下是Python關鍵字的列表。輸入任何關鍵字以獲得更多幫助。

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

相關問題