为什么无法在Python中同一行同时定义两个变量g和h?
代码无法实现预期效果的原因
- 双变量同时赋值属于序列解包操作,要求等号右侧的可迭代对象元素数量和左侧变量数完全一致。你当前代码中
eval(input("enter an integer: "))如果接收到的是单个整数输入,返回的是独立的int类型值,不属于长度为2的可迭代对象,无法完成解包,会直接抛出值错误。 - 输入提示存在逻辑问题,提示文本为「enter an integer(输入一个整数)」,用户只会按照提示输入单个值,不可能满足双变量解包的要求。
- 即便刻意输入两个值,也必须严格符合Python的语法格式,比如输入
2,3或者(2,3)才能被eval()识别为长度为2的元组,如果输入用空格分隔的2 3,eval()会直接抛出语法错误,运行失败。
更稳妥的实现方案
想要实现一行输入两个整数赋值给g、h,推荐使用split()拆分输入,避免eval()带来的代码注入风险:
# 提示用户输入空格分隔的两个整数 g, h = map(int, input("enter two integers separated by space: ").split()) print(g, h)
运行后输入空格分隔的两个整数即可完成赋值,容错性更高。
内容的提问来源于stack exchange,提问作者leena
相关产品推荐
相关产品推荐

