You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python字典模拟switch中get双参数及末尾()的作用疑问

def spring():
  return "It is Spring"
def summer():
  return "It is Summer"
def autumn():
  return "It is Autumn"
def winter():
  return "It is Winter"
def default():
  return "Invalid Season!"

switch_case = {
  1: spring,
  2: summer,
  3: autumn,
  4: winter
}

def switch(x):
  return switch_case.get(x, default)()

y= int(input("enter a number for 4 seasons"))
print (switch(y))

问题解答

1. 代码中默认值的工作机制是怎样的?

当输入的数字不在字典switch_case的键(1-4)范围内时,switch_case.get(x, default)会返回default这个函数对象,末尾的()会触发函数执行,最终返回"Invalid Season!";如果输入的是1-4中的有效数字,就会返回对应季节的函数对象,同样通过()调用后返回季节描述字符串。

2. 字典get方法为何传入两个参数?

字典的get(key, default)方法中,第一个参数是要查找的目标键,第二个参数是当键不存在时返回的默认内容。如果只传第一个参数,键不存在时会返回None,这里传入default(函数对象),就是为了在输入无效数字时,能通过这个默认函数返回错误提示。

3. switch函数return语句末尾的()作用是什么?

这个()是用来调用函数的。因为switch_case.get(x, default)返回的是一个函数对象(比如spring、summer或者default),而不是函数执行后的结果。只有加上(),才会触发函数执行,拿到它返回的字符串。

对应你测试的情况:

  • 移除()后,返回的是函数对象本身(比如<function default at 0x...>),不会执行函数,所以看不到错误提示的字符串;
  • 把()放在default后(写成switch_case.get(x, default())),会导致default()提前执行,而字典里的季节函数没有加(),输入1-4时get返回的是季节函数对象但没调用,自然没有返回值。

内容的提问来源于stack exchange,提问作者Tanishq Chhabra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 14:30:52