Python用if语句双变量初始化报too many values to unpack错误咨询
双变量三元表达式解包报错解决方案
错误原因
你的原始写法触发了Python运算符优先级规则:三元表达式 x if cond else y 的优先级高于逗号分隔的元组声明,因此代码右侧实际会被解析为包含3个元素的元组:
# 原始代码实际解析结果 div, day = (requested_rates["usd"], (30 if False else 1), 1)
左侧只有2个变量接收值,因此触发too many values to unpack解包错误。
解决方案
方案1:一行三元表达式写法
把两个分支的返回值都封装为二元组,三元表达式直接判断返回对应元组即可,完全匹配你的逻辑需求:
div, day = (1, 1) if False else (requested_rates["usd"], 30)
方案2:多行if-else写法
如果追求代码可读性,直接使用你原本写的多行分支写法即可,语法完全合法,更方便后续维护:
if False: div = 1 day = 1 else: div = requested_rates["usd"] day = 30
内容的提问来源于stack exchange,提问作者Ahmet KORKMAZ
相关产品推荐
相关产品推荐

