Python,pycharm将属性从list更改为None,为什么?

Python,pycharm将属性从list更改为None,为什么?,python,pycharm,nonetype,class-attributes,Python,Pycharm,Nonetype,Class Attributes,创建新类时,如果我的属性之一是空列表,pychram建议将其更改为: 等级符合角度条件: 定义初始值(self,xy\u lat\u lon\u list=None): 如果xy_lat_lon_list为无: xy_lat_lon_list=[] self.xy_lat_lon_list=xy_lat_lon_list 我很难理解为什么这比: 等级符合角度条件: 定义初始值(self,xy\u lat\u lon\u list=[]): self.xy_lat_lon_list=xy_lat

创建新类时,如果我的属性之一是空列表,pychram建议将其更改为:

等级符合角度条件:
定义初始值(self,xy\u lat\u lon\u list=None):
如果xy_lat_lon_list为无:
xy_lat_lon_list=[]
self.xy_lat_lon_list=xy_lat_lon_list
我很难理解为什么这比:

等级符合角度条件:
定义初始值(self,xy\u lat\u lon\u list=[]):
self.xy_lat_lon_list=xy_lat_lon_list

在我看来,这种方法更有效、更可读。

因为列表是可变的。检查这些代码片段

def append_to(element, to=[]):
    to.append(element)
    return to
你可能期望会发生什么

my_list = append_to(12)
print(my_list)

my_other_list = append_to(42)
print(my_other_list)
预期产量

[12]
[42]
实际产量,

[12]
[12, 42]

因此,pycharm建议您使用
None
作为默认参数。

这是因为pycharm实际上是在帮您一个忙,防止您将错误与可变的默认参数混淆。