【问题标题】:How to make function input become a string, if it's not?如果不是,如何使函数输入成为字符串?
【发布时间】:2013-01-16 22:49:29
【问题描述】:

所以基本上,假设你定义了一个函数,然后在函数之后的 () 括号中写一些东西。如果我写函数(同性恋),它最终会成为“未定义错误名称”Python2.73

def lenRecur(aStr):
    '''
    aStr: a string

    returns: int, the length of aStr
    '''
    print type(aStr)
    return

def lenRecur2(aStr):
    '''
    aStr: a string

    returns: int, the length of aStr
    '''
    s = str(aStr)
    print type(s)
    return

所以当我输入 lenRecur(gay) 或 lenRecur2(gay) 时,无论我做什么,它都会以错误告终。那么有没有办法避免呢?不使用“”引号。

【问题讨论】:

    标签: python string function input python-2.7


    【解决方案1】:

    否 - 除非您的输入已经是一个包含字符串(或另一个对象)的变量。

    但是,您可以使用 try-except 块(但如果出现错误,它实际上不会执行任何操作)。

    try:
        lenRecur(foo)
        lenRecur2(foo)
    except NameError:
        pass
    

    【讨论】:

    • 我认为即使是 try/except 块也行不通。在示例中,他传递了 Python 编译器始终将其视为变量的内容。该错误可能是 NameError ,这意味着它甚至没有进入函数。
    • @SuperFamousGuy 你是什么意思? except 块将捕获解释器向其抛出的任何 NameError(当然在 try 块内)- 这也不例外(没有双关语)。
    • 啊!看来我读得不太好......我相信你已经明白了,但我的印象是你在尝试/排除方法的内容,而不是运行方法本身。
    【解决方案2】:

    错误发生在函数被调用之前。 Python 尝试在调用函数之前评估参数。因此,Python 遇到了裸名gay 并想知道,“这到底是什么?” 当它无法在本地、封闭、全局或内置范围中找到它的值时,它会引发 NameError。

    没有办法解决这个问题。你必须清楚地说明你的意思。如果gay 是字符串,则必须使用引号。

    【讨论】:

      猜你喜欢
      • 2022-11-12
      • 2011-07-22
      • 1970-01-01
      • 2022-12-17
      • 2021-11-14
      • 2014-02-06
      • 2018-06-26
      相关资源
      最近更新 更多