Python:函数player [key] =在这段代码中执行的函数是什么?

时间:2017-09-25 18:37:08

标签: python

def basketball_player(first, last, **player_info):
    player = {}
    player['first name'] = first
    player['last name'] = last
    for key, value in player_info.items():
        player[key] = value
    return player
player_profile = basketball_player('lebron', 'james',
                                   team = 'cavaliers',
                                   number = '23')
print(player_profile)

我理解其他所有内容,我只是不明白你为什么要分配值来玩[key]

1 个答案:

答案 0 :(得分:0)

我认为您的答案的关键是了解并了解**player_info正在做什么以及.items()方法正在做什么。

**扩展运算符(您可能已经知道)允许您将任意数量的关键字参数传递给方法。所以,基本上,当你这样做时:

player_profile = basketball_player('lebron', 'james',
                                   team = 'cavaliers',
                                   number = '23')

您已为变量分配了以下值:

first = 'lebron'
last = 'james'
player_info = {'team': 'cavaliers', 'number': '23'}

player_infodict

在python中的任何dict上,您可以调用items()方法将其转换为[(<KEY>, <VALUE>)]形式的元组列表。

因此,在您的实例中,player_info.items()变为:

[('team', 'cavaliers'), ('number', '23')]

当你执行for循环时,它循环遍历元组列表。并且,对于每个元组,它将[0]分配给key变量,将[1]分配给value

因此,当您在player[key]列表的第一次迭代中调用player_info.items()时,keyplayer_info.items()[0]相同或者...... {在这种情况下'team' 1 test fixed(5,2), 2 another_test char(12), 2 a_third_test, 3 one pic'9{9}V.99', 3 two pic'9,999V.99', 3 three fixed(7,2), /* test,t*/ /*test 2,*/ /*and more */ 2 another_field fixed bin(13), 2 a_really_long_super_long_field_name_requiring_two_lines_for_declaration char(1), 2 a_field char(8); 1}}。