python - python中的函数返回变量
问题描述
嘿,我需要有关我在 edx 练习课程中找到的以下代码的帮助!
def foo(x, y = 5):
def bar(x):
return x + 1
return bar(y * 2)
foo(3)
第一步是数字 3 将进入 foo 中的 x 变量,因为 y 已经给出 5。所以 foo(3,5)。第二步是 def bar(3),它应该返回 4,但是为什么这一步会直接返回 bar(y * 2),即 bar(5*2),然后返回 bar(10),然后返回 11。
解决方案
如果您在理解代码的作用时遇到问题,请将其写得更清楚。您的代码段相当于:
def bar(x):
ret = x + 1
return ret
def foo(x, y=5):
ret = bar(y * 2)
return ret
foo(3)
如您所见,您传递给的“3”foo()
从未使用过。foo()
将 y 加倍并加一(通过bar()
)
推荐阅读
- arrays - 在 Cython 中调用 numpy 函数确实会减慢速度
- mysql - mysql DECLARE V_PAGE_START INT DEFAULT (I_PAGEINDEX-1)*I_PAGESIZE+1;
- python - 并行请求处理 python + lambda
- python - 不使用 DEFLATE 的野外 ZIP 文件?
- flutter - 在颤振中管理短暂状态
- javascript - 在vue js中随机播放对象的对象
- next.js - Next.js + MDX 增强不允许 Typescript 模板文件
- mysql - 消息通知查询 Sql ( Springboot )
- javascript - Discord.js(大规模禁令命令修复)
- python - 如何创建.sql文件作为python数据框的输出