我正在阅读Python速成课程,并在做第8章(函数)中的任务.有一件事我不能理解.这是代码(#1):
def make_car(manufacturer, model_name, **car_info):
car_info['manufacturer'] = manufacturer
car_info['model name'] = model_name
return car_info
car = make_car('subaru', 'outback', color='blue', tow_package=True)
print(car)
这是输出:
{'color': 'blue', 'tow_package': True, 'manufacturer': 'subaru', 'model name': 'outback'}
我得到了我需要的东西--一本词典.数据被存储在词典car_info
中.
这是另一段代码(#2):
def make_car(manufacturer, model, **options):
"""Make a dictionary representing a car."""
options = {
'manufacturer': manufacturer.title(),
'model': model.title(),
}
for option, value in options.items():
options[option] = value
return options
my_outback = make_car('subaru', 'outback', color='blue', tow_package=True)
print(my_outback)
我认为数据应该存储在选项中,输出应该与前一个相同.但事实并非如此.我明白了:
{'manufacturer': 'Subaru', 'model': 'Outback'}
谁能解释一下为什么代码#2不能提供与代码#1相同的结果?它必须将所有数据存储在options
中(就像代码#1存储在car_info
中一样).
此更改有帮助(代码#3):
def make_car(manufacturer, model, **options):
"""Make a dictionary representing a car."""
car_dict = {
'manufacturer': manufacturer.title(),
'model': model.title(),
}
for option, value in options.items():
car_dict[option] = value
return car_dict
但我不明白为什么我们需要car_dict
,如果在代码#1中,它与car_info
一起工作得很好.