【问题标题】:How can i set isdigit() command as a variable?如何将 isdigit() 命令设置为变量?
【发布时间】:2012-09-27 11:23:38
【问题描述】:

我是 python 新手,但我很快就掌握了基础知识,并决定在我还在学习的时候开始尝试制作一个程序,因为我通过实际做事来学得最好。

所以我在 python 中制作了一个程序,它将添加多项式,我需要使用isdigit() 命令查看解析器中的字符是否为数字 im。

我不想一直在我的代码中输入isdigit(),例如n.isdigit(),而是想将它分配给变量t = 'isdigit()',然后输入n.t。这不起作用,那么有没有不输入整个命令的替代方法?

【问题讨论】:

    标签: python variables types


    【解决方案1】:

    你可以创建一个函数:

    def t(n):
        if n.isdigit():
            return True
        else:
            return False
    
    a = "a5b"
    print t(a[1])
    

    我不知道这是否是你要找的。​​p>

    【讨论】:

    • 您对t 的定义太长了大约四行。
    • 是的,问题是关于将调用从“isdigit”缩短为“t”,这样您就可以节省6个字母,而不是缩短函数的定义,而且因为他说他是python的新手,我认为这是一种更清晰的方式。
    • 我说的不是这个。我相信t 最清晰的定义比你的定义短四行。初学者可能立即清楚,但这并不意味着我们应该放弃在此过程中教他们一些东西的机会。
    • 因此,您的替代方案可能会有所改进,但正如您所说,初学者并不会立即清楚。我认为你是对的。
    【解决方案2】:

    虽然您可以使用t = str.isdigit 之类的代码开始您的代码,然后检查t(n)(您不能将其设为字符串的属性,因为您无法从外部拦截属性查找),这实际上是一个漂亮的馊主意。虽然打字速度更快,但阅读起来要困难得多。这会让你(或其他任何人)在几周后处理代码。这并不是因为对不必要的细节进行抽象是不好的(事实并非如此),这个 sn-p 根本不够复杂,无法从抽象中受益。任何可读的名称至少与isidigt 一样长,因此您实际上无法赢得任何可读性。

    【讨论】:

    • 感谢我决定使用 T(n) 的东西,并且我为代码编写了一个密钥,这样它就不会变得混乱。
    【解决方案3】:

    你必须创建一个自定义函数或 lambda 来为你调用 isdigit() 方法,给定一个实例:

    t = lambda n: n.isdigit()
    
    # ...
    
    t(n)  # returns the result of `n.isdigit()`
    

    或者您可以存储对类方法的引用:

    t = str.isdigit
    
    # ...
    
    t(n)  # returns the result of `str.isdigit(n)`
    

    因为n 的类型是str

    语法n.t alwayst 作为n 上的属性查找,并且从不为此查询局部变量t

    【讨论】:

    • 或者t = str.isdigit,我想。
    猜你喜欢
    • 2017-04-20
    • 2014-05-26
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 2013-08-02
    • 2011-06-06
    相关资源
    最近更新 更多