0

私はPythonを少しいじり始めており、初心者としてこれを試しました:

>>> s="";str=""
>>> for x in [ 1,2,3,4,5,6 ] : 
...   s += str(x)
...   
Traceback (most recent call last):
  File "<console>", line 3, in <module>
TypeError: 'str' object is not callable

という変数を誤って宣言してしまいましたstr(str は関数であるはずです)。

  • 動的に型付けされた言語であっても、セマンティクスを壊しすぎると仮定すると、メソッドを修飾strし、これが起こらないようにしたり、困難にしたりするために使用できる名前空間はありますか?
4

2 に答える 2

1

これはimport <module>代わりにfrom <module> import *使用されるものです。のローカル変数値の唯一の意味で str を使用する限り、ネームスペースをマングルせずに elswhere<module>を使用でき ます。module.str

衝突できない唯一のトークンは キーワードです。これは意図された機能であり、これを防ぐ方法はありません: Python ではすべてがオブジェクトです

いくつかの IDE ツール、p.ex を使用したい場合があります。コードをチェックし、エラーの可能性を警告する Eclipse+PyDev。

于 2013-11-09T21:47:47.827 に答える
1

あなたの質問によると、あなたはすでに定義しています

str=""
そのため、値を文字列に変換する str メソッドを呼び出すと、実際のメソッドは呼び出されず、代わりに呼び出されますstr=""。str オブジェクトを呼び出して int を文字列に変換できないため、エラーが発生するのはそのためです。

于 2013-11-09T21:36:24.423 に答える