python - 带计数器的 Python 递归
问题描述
我有一个这样的递归函数:
b=4
def someFunction(x,y,z):
global b
b += x
if...#something
else:
someFunction(x,y,z)
...
有很多东西,但这是一般的想法。我的问题是,在 cmd 上运行我的程序时,我无法继续使用不同的参数调用“someFunction”,因为没有为 b 重置,但是如果我在函数中重置 b,它将无法按我的预期工作。因此,我可以在两个函数中使用子函数中的递归来编写它,但是当我调用函数时是否有其他方法可以重置 b 而不会在开始递归时出现问题?
解决方案
我通常做的是使用一个可选的关键字参数,像这样。
def someFunction(x,y,z, b=None):
if b is None:
b = 4
b += x
if...#something
else:
someFunction(x,y,z,b=b)
这样,您可以b
在第一次调用任何值时初始化(并避免使用全局变量)。
这也有积极的一面,现在someFunction
是一个纯函数(没有副作用,相同的输入总是给出相同的输出)并且更容易使用。(测试,重构,..)
推荐阅读
- marklogic - 如何解释 xdmp:encoding-language-detect 的结果?
- linux - bash,如何对列的整数值求和?
- android - 弹出菜单背景颜色更改不起作用
- php - 我从 Postman 上传到 Laravel API 的图像未保存在文件夹中
- amazon-s3 - 同时使用 S3 和 Redshift 时的凭据问题
- jspdf - 如何在不换行的情况下截断字符串(不换行)?
- redis - 为什么 redis 哈希名称不能包含电子邮件地址?
- javascript - 如何在 NodeJs 终端中使用 await?
- python - Python - 按最多和最少的元音对复制的列表进行排序
- react-native - 删除导航到不同堆栈的先前堆栈