Python 函数参数-澄清

Python 函数参数-澄清,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,Q-编写一个函数consonach,返回字符串ch是否为辅音字母。您可以假设ch是一个只包含字母字符的字符串 我的代码: l = ['a','e','i','o','u'] def consonant(ch): if ch in l: return False else: return True x = consonant(g) # Doesn't work NameError g is not defined print(x) 它给出了

Q-编写一个函数consonach,返回字符串ch是否为辅音字母。您可以假设ch是一个只包含字母字符的字符串

我的代码:

l = ['a','e','i','o','u']

def consonant(ch):

    if ch in l:
        return False
    else:
        return True

x = consonant(g) # Doesn't work NameError g is not defined 
print(x)
它给出了一个名称错误:未定义名称“g”

但是,如果我将参数设置为stringcharacter,它将起作用:

x = consonant('g')  # Works 
我不明白为什么在第一种情况下它不能像在第二种情况下一样将值g传递给ch。

g是一个名为g的变量。就像x在x=辅音“g”中一样

“g”是文本字符串“g”

请注意,您的代码不支持大写字符

无关但

if ch in l:
    return False
else:
    return True
可以简化为

return ch not in l

这实际上与函数参数没有任何关系。如果你在[a'、'e'、'i'、'o'、'u']中做了If g:printVotel,那么你仍然会得到一个NameError,不需要函数。consonantg传递的是名为g的变量,而不是第二个辅音'g'中的字符串g。既然没有名为g的变量,它会给你一个命名错误。你能澄清你的困惑吗?不带引号的g不是一个值,它是一个名称。除非定义该名称所引用的值,否则它没有任何意义,因此会触发NameError。你期望g有什么值?如果printx输出变量x,那么辅音g做什么…?