4

私が正しく理解していれば、Pythonですでにグローバル関数になっているローカル変数の式を使用しない方がよいでしょう。だから私はこれを信じています

list = [1,2,3]

を支持して推奨されていません

mylist = [1,2,3]

listはすでにPythonの組み込みオブジェクトであり、そうでmylistはないためです。dirただし、何らかの式( 、、、numなど)を使用する必要があるかどうかは常にわかりませんcnt。ローカル変数に名前を付けるために避けたほうがよい文字列の包括的な概要はありますか?

4

2 に答える 2

5

基本的に、これらすべてを避けてください。それらはすべて__builtin__モジュール内にあります(builtinsPython 3の場合)。

出典: Python標準ライブラリ»組み込み関数

于 2012-11-10T06:30:37.830 に答える
3

避けるべき名前は、キーワード(エラーが発生するため、簡単に見つけることができます)と組み込みであり、サイレントにマスクされます。不正な名前をテストするためのコードスニペットは次のとおりです。

from keyword import kwlist

def bad_name(name):
    return name in dir(__builtins__) + kwlist

...そしてここにリストがあります(Python 3.3の場合):

組み込み関数、タイプなど。

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

CamelCase内のすべて(組み込みの例外など)または二重アンダースコアで始まるものは、とにかくそれらを使用するべきではないため、上記のリストから除外されます。

キーワード

False               None                True                and
as                  assert              break               class
continue            def                 del                 elif
else                except              finally             for
from                global              if                  import
in                  is                  lambda              nonlocal
not                 or                  pass                raise
return              try                 while               with
yield
于 2012-11-10T06:52:17.720 に答える