Python 除了不好的命名约定之外,使用诸如数据类型名称(例如:datetime、str、int)之类的变量名还有什么害处?

Python 除了不好的命名约定之外,使用诸如数据类型名称(例如:datetime、str、int)之类的变量名还有什么害处?,python,python-3.x,Python,Python 3.x,除了不好的命名约定之外,使用变量名如数据类型名(例如:date、str、int)有什么害处 例如: str = 'some string' int = 10 datetime= datetime.datetime(2020, 5, 17) “危害”在于您正在隐藏内置名称,并且不能在与变量相同的范围内再使用它们 也就是说,对于非常小的范围,这可以说是好的,尽管有些人不同意——这是一个风格观点的问题。例如,有些人会觉得调用函数str的通用字符串参数很好。其他对象。您可以使用这些变量名,但只

除了不好的命名约定之外,使用变量名如数据类型名(例如:date、str、int)有什么害处

例如:

str = 'some string'
int = 10    
datetime= datetime.datetime(2020, 5, 17)

“危害”在于您正在隐藏内置名称,并且不能在与变量相同的范围内再使用它们


也就是说,对于非常小的范围,这可以说是好的,尽管有些人不同意——这是一个风格观点的问题。例如,有些人会觉得调用函数
str
的通用字符串参数很好。其他对象。

您可以使用这些变量名,但只要变量在范围内,就不能使用这些内置函数。只要您同意(而且其他人确实不喜欢您的变量命名选择:),您就应该可以

这些名称后面有一个内置功能,通过将它们用作变量名,您将覆盖它们的主要功能

看看这个:

In [1]: a = list()  # main functionality                                                                                                                         

In [2]: a                                                                                                                                   
Out[2]: []          # result

In [3]: list = 2    #overriding `list`                                                                                                                             

In [4]: b = list()  # it is like typing 2()   
                                                                                                                  
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-4-650a10196a8c> in <module>
----> 1 b = list()

TypeError: 'int' object is not callable
[1]中的
:a=list()#主要功能
在[2]中:a
Out[2]:[]结果
在[3]中:list=2#覆盖'list'
在[4]:b=list()#类似于键入2()
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在里面
---->1 b=列表()
TypeError:“int”对象不可调用

我不使用Python,所以如果可能的话,请不要这样做,但我会假设它是

这对读取代码的开发人员的眼睛是有害的

变量名应该是有意义的,比如:

string virus_name;
int countries_affected;
date last_virus_spotted_day;

这使得任何阅读代码的人、代码审阅者或两年内阅读他们试图做的事情的同一个人都可以理解。

它覆盖了内置对象或类型。试试看。将
int
赋值后,将“11”转换为
int

int = 11
int('11')
>>> TypeError: 'int' object is not callable

它覆盖内置对象或类型。试试看。将
int
赋值后,将“11”转换为
int
。它们不是关键字。好吧,但是你如何将函数的参数
称为大写字母呢?@KonradRudolph在dotnet中,我们通常使用“the”和类型名,比如大写字母(字符串)@S3DEV我……不同意。事实上,我正要用他的答案中的信息修改我自己的回答。@S3DEV这就是为什么我说我一开始不使用Python。。但是我明白你的意思了。因为没有叫做“date”的python类型-我想可以使用date作为变量名?@variable如果变量足够描述性,当然!