源代码出处:
matched_DeliveryAddress=(for_deliveryAddress for for_deliveryAddress in create_deliveryAddress_list if for_deliveryAddress.id==updated_DeliveryAddress.id)[0]
然后在运行的时候,他给我报这个错:
matched_DeliveryAddress=(for_deliveryAddress for for_deliveryAddress in create_deliveryAddress_list if for_deliveryAddress.__getattribute__(id)==updated_DeliveryAddress.id)[0]
TypeError: 'generator' object has no attribute '__getitem__'
但是我记得有一个函数也是类似的,但是没有报错:
def get_DeliveryAddress(merchant,**kwargs):
assert len(kwargs)==1,"现在只支持一个参数"
prop,value=kwargs.items()[0]
create_DeliveryAddresslist=cheshi_getalldeliveryAddress(merchant)
return [ for_DeliveryAddress for for_DeliveryAddress in create_DeliveryAddresslist if for_DeliveryAddress.__getattribute__(prop)==value][0]
只有两个选择,
1.把属性访问改为__getattribute__
2.把()改为[],
然后,经过试验,第一种是错误的。
,第二种是正确的。。
这也就是说()在迭代的时候使用的是迭代器所以性能要高一些。