Python一行代码中圆括号与方括号组合赋值技巧的名称及资料查询
关于该Python编程技巧的说明
这种写法没有被广泛认可的官方名称,一般可以称之为元组索引式条件对象选择赋值,本质是利用元组的索引特性,根据条件选择要操作的对象后完成赋值。
核心逻辑拆解
你给出的代码里,({}, d)是一个包含两个字典的元组:
- 当
i%2 == 0时,索引为0,选择临时空字典{},赋值后这个字典就被直接丢弃,不会产生任何实际作用 - 当
i%2 == 1时,索引为1,选择预定义的字典d,将键值对i: i**2存入其中
为什么不推荐这种写法
- 可读性极差:多数开发者无法一眼理解代码意图,会大幅提升后续维护成本
- 存在无意义操作:每次选择空字典时的赋值完全无效,属于纯粹的炫技类写法
相关知识获取方向
- 可以学习Python的表达式求值优先级:这段代码能正常执行的核心是元组索引操作的优先级高于赋值,因此会先确定目标对象再执行赋值
- 这类写法属于Python的“奇技淫巧”,常见于**代码高尔夫(Code Golf)**场景(用最少代码实现功能),或者社区的趣味代码讨论中,但完全不适合工程化代码
- 更规范的替代写法是使用Python条件表达式,可读性大幅提升:
d = {} for i in range(10): target_dict = d if i % 2 else {} target_dict[i] = i ** 2
内容的提问来源于stack exchange,提问作者RoKivals
相关产品推荐
相关产品推荐

