Python中print嵌套input时函数执行顺序困惑求解
Python代码执行顺序问题解答
- Python中所有函数调用都遵循参数先求值、函数后执行的规则:调用任意函数时,会先把括号内所有入参的取值完全计算出来,再运行函数本身的逻辑。
问题1 字符串拼接嵌套input的执行逻辑
对应代码:print("Hello " + input("What is your name ") + "!")
疑问点:print写在最前,为什么先执行input的提示?
解释:
print函数要正常执行,必须先拿到括号内拼接字符串的最终结果。拼接"Hello " + 输入值 + "!"的过程中,需要先获取input("What is your name ")的返回结果,所以会先运行input函数弹出提示、接收用户输入,拿到输入的姓名后才能拼接出完整的问候字符串,最后才会调用print输出拼接结果。
如果去掉input,print的入参就是固定的"Hello"字符串,不需要额外计算取值,所以会直接执行print输出内容。
问题2 len嵌套input的执行逻辑
对应代码:print( len( input("What is your name? ")))
疑问点:为什么先弹input提示,再计算长度输出?
解释:
同样遵循参数先求值的规则:
- 要执行print,先求入参
len( input("What is your name? ") )的取值 - 要计算len的结果,先求len的入参
input("What is your name? ")的取值 - 运行input函数弹出提示,接收用户输入后返回用户输入的字符串
- 用len计算字符串长度,拿到最终的数字结果
- 把数字结果传给print执行输出
常见误解澄清
并不是input函数有优先执行的特权,所有函数入参的计算优先级都高于函数本身的执行逻辑。比如print(2 + 3 * 5)也是先计算3*5、再计算2+15,拿到最终结果17后才会执行print输出,和嵌套函数的执行逻辑完全一致。
内容的提问来源于stack exchange,提问作者buddy4341
相关产品推荐
相关产品推荐

