Pythonで変数id
に名前を付けるのが悪いのはなぜですか?
id()
は基本的なビルトインです:
モジュール
__builtin__
の組み込み関数id
のヘルプ: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.)
一般に、Eclipseで任意の言語のキーワードまたは組み込み関数を使用する変数名を使用することは、たとえ許可されていても、悪い考えです。
id
は、オブジェクトのメモリアドレスを提供する組み込み関数です。関数にid
という名前を付けた場合、__builtins__.id
オリジナルを取得します。 id
の名前をグローバルに変更すると、小さなスクリプト以外は混乱します。
ただし、組み込みの名前を変数として再利用することは、使用がローカルである限りそれほど悪くはありません。 Pythonには(lotがあり、(1)共通の名前があり、(2)あまり使用しない。組み込み変数はローカル変数またはオブジェクトのメンバーは、コンテキストから何をしているのかが明らかなので、OKです。
例:
def numbered(filename):
file = open(filename)
for i,input in enumerate(file):
print "%s:\t%s" % (i,input)
file.close()
魅力的な名前を持つビルトイン:
id
file
list
map
all
、any
complex
dir
input
slice
buffer
PEP 8-Python Codeのスタイルガイド)では、セクション 説明:命名スタイル :
_
single_trailing_underscore_
_:Pythonキーワード、例えば、.
Tkinter.Toplevel(master, class_='ClassName')
したがって、質問に答えるために、このガイドラインを適用する例は次のとおりです。
_id_ = 42
_
変数名に末尾のアンダースコアを含めると、意図が明確になります(PEP 8のガイダンスに精通している人にとって)。
ここで不人気なことを言うかもしれません:id()
は、ビジネスロジックではめったに使用されない、かなり特殊な組み込み関数です。したがって、idが組み込み関数を意味していないことが明らかな、厳密で適切に記述された関数で変数名として使用しても問題はありません。
組み込み関数の後に変数に名前を付けるのは悪いことです。その理由の1つは、名前が上書きされることを知らない読者にとって混乱を招く可能性があるためです。
'id'はPythonの組み込みメソッドです。 「id」に値を割り当てると、メソッドが上書きされます。前に「some_id」のように識別子を使用するか、別の大文字化方法で使用することをお勧めします。
組み込みメソッドは単一のパラメーターを受け取り、渡したオブジェクトのメモリアドレスの整数を返します。
>>>
id(1)
9787760
>>>
x = 1
>>>
id(x)
9787760
それは組み込み関数の名前だからです。