python - 字典自动调用作为值的函数
问题描述
对编程和尝试使用 Python 编写命运之轮游戏非常陌生。其中一个功能是包含所有可能的车轮切片的字典。除其他外,函数将抓取一个随机键并返回该值。词典:
wheel = {
"Bankrupt": bankrupt(), # a function that removes all the player's money
"$100": 100,
"$200": 200,
"$300": 300,
"$400": 400,
"$500": 500,
"$600": 600,
"$700": 700,
"$800": 800,
"$900": 900,
"$1000": 1000,
"$2000": 2000
}
我确定这是一个非常新手的问题,但我不明白为什么我一运行脚本就调用字典中的破产函数,然后我实际上通过选择随机轮片的其他函数调用它。
任何指导将不胜感激。
解决方案
当 python 创建您的字典时,它将评估每个值。因此它运行 bankrupt() 来查找破产键的值。所有其他值也正在评估中,即 100 被评估为 100。
在 python 中,函数是“第一类”对象,因此您可以像传递任何其他对象一样传递它们。这意味着您可以将其作为 bankrupt 传递给它函数,或者作为 bankrupt() 传递给它破产函数的结果。您还可以有多个可能的破产函数,其选择由包装函数定义。在这种情况下,您可能希望使用 bankrupt () 作为字典键,因为在初始化字典时选择了正确的函数。
还值得注意的是,这将在 python 的其他地方发生,例如函数初始化时的函数参数。
推荐阅读
- node.js - 从 FTP 下载并直接将其复制到 Azure Blob/Amazon S3 中,而无需将其存储在 Node.js 中的本地系统中
- ios - SwiftUI:动态“列表”中的“切换”在重用时破坏了它们的布局?
- unit-testing - 使用 Mockito 模拟挂起函数返回 null
- c++ - 为什么这个示例 C++ 代码片段中的第一个参数是对象,而不是对象的内存地址?
- c++ - Cin 和 getline 不会正确保存非 ascii 字符
- html - 如何将图像放在容器的顶部中心
- javascript - 空字符串是有效的 JSON 键吗?
- javascript - quick.db 调平系统 - database.updateValue 不是函数
- java - 什么相当于 Flux 中 Mono 的 doOnSuccess 方法?
- c - 如何使用以下结构初始化双向链表?