python - 确保 Python 中的用户输入有效时,是否有理由不使用递归?

标签 python validation recursion input

我对 Python 很有经验,但是当我帮助一位 friend 编写脚本时,我注意到他以与我熟悉的方式不同的方式解决了一个常见问题。他确保用户输入的格式有效( float );我已经习惯看到这样的东西,这也是我能找到的所有答案所说的:

def get_input()
    while True:
        try:
            val = float(input("input pls"))
            return val
        except:
            print("not valid, try again)

但是他使用递归解决了这个问题,如下所示:

def get_input():
    try:
        val = float(input("input pls"))
        return val
    except:
        print("not valid, try again")
        return get_input()

这有什么缺点吗?

最佳答案

与此相关的一些问题或数据:

  1. 存在递归限制(非常高,但可能会超过)
  2. 每次递归调用get_input方法时,都会为作用域创建一个新的堆栈,更重要的是,它会链接try... except block ,这是对于内存使用和性能来说非常糟糕。
  3. 递归方法通常更难调试。

但由于它看起来像一个玩具示例,也许这并不重要。

关于python - 确保 Python 中的用户输入有效时,是否有理由不使用递归?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42199555/

相关文章:

validation - 使用 aurelia-validation 创建全局验证规则

haskell - 如何有效地将归纳类型转换为互归纳类型(无需递归)?

recursion - Cypher - neo4j 查找递归结束节点

python - 类型错误 : metaclass conflict in python

python - 通过网状结构在 R 中运行 gensim 时出现 ImportError : cannot import name 'ssl' from 'urllib3. util.ssl

python - Django ORM - 将原始值分配给 DecimalField

java - 过滤器中的 Ninja Framework JSR303Validation

php - Laravel 5.5 验证多文件上传

python - 在行为上,你如何只运行一个场景?

Java递归匹配txt中的括号