Python入门疑问:Higher or Lower游戏代码函数参数与字典取值问题
Higher or Lower游戏代码参数问题解答
问题1:为什么函数内使用形参account而非全局的data是合理的?
首先纠正一个认知误区:你导入的data是存储字典的列表,本身是列表类型,直接写data["name"]会直接触发类型错误,因为列表只能用整数索引取值,只有data里的单个元素才是包含name、follower_count等键的字典。
使用形参account的合理性来自两方面:
- 符合数据结构逻辑:函数本身的作用是格式化单条账号信息,传入的
account就是单条账号字典,直接访问键符合数据层级 - 保证函数复用性:如果函数写死绑定全局
data的某个元素,那只能处理固定的一条数据,现在的写法只要传入符合结构的账号字典就能正常格式化,不用修改函数内部代码
问题2:没有全局account变量为什么传入account_a/account_b可以正常运行?
函数定义时写的account是形参,本质是函数内部的临时占位变量,仅在函数运行时生效,不需要在全局作用域定义同名变量。
当你调用format_data(account_a)时,Python会自动完成一次隐式赋值:把实参account_a的值(也就是随机取出的单条账号字典)赋值给函数内部的形参account,此时函数内部访问的account就是你传入的account_a对应的数据;同理调用format_data(account_b)时,形参account就会被赋值为account_b的字典值,自然可以正常获取信息。
完整参数传递逻辑梳理
- 导入的
data是包含多组账号字典的列表,每个字典都有name、follower_count等固定键 random.choice(data)从列表中取出一个随机字典,分别赋值给account_a、account_b- 调用
format_data时,传入的实参(account_a/account_b)会赋值给函数的形参account - 函数内部通过
account访问传入的字典的对应键,格式化后返回结果
内容的提问来源于stack exchange,提问作者Tamas orban
相关产品推荐
相关产品推荐

