Python函数间数据传递问题:调用input函数为何输出6而非36?
问题原因及解决方案
首先,咱们来拆解下你遇到的问题:你执行input(2,2,2)只得到6,没看到预期的36,核心原因很简单——你根本没调用calculator函数!
具体原因分析
- 当你运行
input(2,2,2)时,只是触发了input函数的执行:它计算三个参数的和(2+2+2=6),然后把这个结果返回给你。但你没有把这个返回值传递给calculator,所以calculator完全没机会运行,自然不会输出36。 - 顺带提个小细节:你的
input函数里的变量名df有点误导人,因为它实际是个整数,不是Pandas的DataFrame,不过这对当前问题没影响,只是个可以优化的命名小问题。
修改方案
我们需要把input函数的返回值传给calculator,同时建议你不要用input作为自定义函数名(会覆盖Python内置的input()函数,这个内置函数是用来获取用户输入的)。这里有两种常见的修改方式:
方式1:分步调用
import pandas as pd # 重命名函数,避免覆盖内置input def calculate_sum(param1, param2, param3 = 4): result = param1 + param2 + param3 pd.options.display.float_format = '{:,.0f}'.format return result def calculator(num): df2 = num * num print(df2) return df2 # 可选:返回结果方便后续复用 # 先获取求和结果,再传给计算器函数 sum_result = calculate_sum(2,2,2) calculator(sum_result)
方式2:链式调用(更简洁)
直接把calculate_sum的返回值作为参数传给calculator:
# 调用时直接链式执行 calculator(calculate_sum(2,2,2))
运行上面的代码,你就能看到输出36了。
内容的提问来源于stack exchange,提问作者H. Meesral
相关产品推荐
相关产品推荐

