web-dev-qa-db-ja.com

Pythonでは `id`はキーワードですか?

私のエディター(TextMate)は、idを他の色(変数名として使用した場合)で、通常の変数名で表示します。キーワードですか?キーワードを網かけしたくない...

53
Aufwind

idはPythonではkeywordではありませんが、 組み込み関数

キーワード are

and       del       from      not       while
as        Elif      global    or        with
assert    else      if        pass      yield
break     except    import    print
class     exec      in        raise
continue  finally   is        return
def       for       lambda    try

キーワードは無効な変数名です。以下は構文エラーになります。

if = 1

一方、idまたはtypeまたはstrなどの組み込み関数は、シャドウイングできます。

str = "hello"    # don't do this
58
Greg Hewgill

Pythonからヘルプを取得することもできます。

>>> help(id)
Help on built-in function id in module __builtin__:

id(...)
    id(object) -> integer

    Return the identity of an object.  This is guaranteed to be unique among
    simultaneously existing objects.  (Hint: it's the object's memory address.)

または、IPythonに質問できます

IPython 0.10.2   [on Py 2.6.6]
[C:/]|1> id??
Type:           builtin_function_or_method
Base Class:     <type 'builtin_function_or_method'>
String Form:    <built-in function id>
Namespace:      Python builtin
Docstring [source file open failed]:
    id(object) -> integer

Return the identity of an object.  This is guaranteed to be unique among
simultaneously existing objects.  (Hint: it's the object's memory address.)
17
joaquin

ちょうど 参照目的

Pythonで何かがキーワードかどうかを確認します。

>>> import keyword  
>>> keyword.iskeyword('id')
False

Pythonのすべてのキーワードを確認します。

>>> 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']

それは組み込み関数です:

id(...)
    id(object) -> integer

    Return the identity of an object.  This is guaranteed to be unique among
    simultaneously existing objects.  (Hint: it's the object's memory address.)
7
nakedfanatic