4

如果我理解正确,最好不要对已经是 Python 中的全局函数的局部变量使用表达式。所以我相信这个

list = [1,2,3]

不推荐赞成

mylist = [1,2,3]

因为list它已经是 Python 中的内置对象,而mylist不是。但是,我并不总是确定是否应该使用某些表达式(例如dirnumcnt)。对命名局部变量时最好避免使用的字符串有任何全面的概述吗?

4

2 回答 2

5

基本上,避免所有这些。所有这些都在__builtin__模块内(builtins在 Python 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 回答