如何在python中将函数参数设置为字符串?

2024-05-21 06:23:18 发布

您现在位置:Python中文网/ 问答频道 /正文

def count(string,letter):
    count=0
    for each in string:
        if each==letter:
            count=count+1
    print count

有没有一种方法可以将参数设置为自动接受字符串形式的输入,这样用户就不必添加引号?


Tags: 方法字符串用户inforstringifdef
3条回答

is there a way to set the parameters to automatically accept the inputs as strings so the user doesn't have to add the quotations?

必须添加引号,以便解释器知道变量的类型为String,以便方法的内部代码知道如何处理参数。

默认情况下,count方法的参数没有必需的类型,因此您可以将字典、整数或列表等传递给它,它仍将运行该方法的内部代码。但是,您的代码是针对字符串变量和字符定制的,因此用户必须提供引号,以便您的方法按预期执行,否则很可能导致引发错误。

def count(string, letter):
    ctr = 0
    for _letter in string:
        if _letter == letter:
            ctr += 1
    print ctr

另一种选择: 您可以使用input()

 def count(letter):
        string=input() #<- user can type string into command line w/o quote
        do_stuff
        return bacon

但只要将字符串作为参数不带引号传递,就不能这样做。 他们会被解释为争论。

我想你是在问你是否可以这样调用函数:

count(this is my string, i)  # 3

而不是像这样:

count('this is my string', 'i')  # 3

答案是,没有办法做到这一点。这些参数在分析源代码时被解析,而源代码解析器将无法从多个输入参数中消除包含逗号的字符串的歧义。

当然,这只是解析器歧义的一个例子。如果要提出这样一个特性,我想如果你对输入字符串的格式非常严格(没有逗号,有额外的语法来消除字符串中有变量名的字符串与没有变量名的字符串之间的歧义,等等),你可能会想出一个语法来实现它。然而,记住所有这些将比仅仅用引号将字符串括起来要困难得多(而且这将使python解析器更难使用)。总而言之,我认为他们引入这样的功能对语言来说是一个巨大的损失(尽管我只是一个不属于BDFL的人,所以不要把我的观点误认为是某个重要人物的观点)。

相关问题 更多 >