Python,pycharm将属性从list更改为None,为什么?
创建新类时,如果我的属性之一是空列表,pychram建议将其更改为: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
等级符合角度条件:
定义初始值(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实际上是在帮您一个忙,防止您将错误与可变的默认参数混淆。