Python中“+”字符串运算符的说明

Python中“+”字符串运算符的说明,python,Python,这是用于尝试不同列表操作的Python代码。我不明白。有人能从下面的代码中解释一下表达式cmd++、.joinarg+中的+运算符吗 n = int(raw_input()) l=[] for _ in range(n): s=raw_input().split() cmd=s[0] arg=s[1:] if cmd!='print': cmd+="("+",".join(arg)+")" eval("l."+cmd) el

这是用于尝试不同列表操作的Python代码。我不明白。有人能从下面的代码中解释一下表达式cmd++、.joinarg+中的+运算符吗

n = int(raw_input())
l=[]
for _ in range(n):
    s=raw_input().split()
    cmd=s[0]
    arg=s[1:]
    if cmd!='print':
        cmd+="("+",".join(arg)+")"
        eval("l."+cmd)
    else:
        print l
投入:

插入0.5 插入1 10 插入0 6 打印
所需表达式中的+为串联。它需要将它与arg的每个元素连接起来。表示join方法,parantesse表示所有表达式。例如,如果你有arg=[1,2,3],那么+,.joinarg+给你1,2,3,这是一个字符串,如果你有+,k.joinarg+它会给你1k2k3k。通常,将merge的字符串连接在一起。在python中,因为一切都是object+,所以有时除了加法之外还有一个含义。有关更多信息,请搜索连接python

编辑:我假设您是指+因为+=是cmd=cmd+

如果+运算符的两侧都是字符串,则运算符会进行串联。也就是说,foo+bar变成了foobar

在您展示的代码中,有一大堆不同的串联。首先将一些括号连接到str.join返回的字符串的两端,该字符串在args中的字符串之间插入逗号,然后将整个字符串连接到cmd字符串的末尾。最后,将所有cmd连接到l。在你评估它之前

因此,对于insert 0 5的示例输入,cmd以insert开头,args以列表[0,5]开头。首先从join创建0,5,然后连接括号以获得0,5,然后连接到cmd以获得insert0,5,最后是l.insert0,5

如前所述,使用字符串格式而不是串联将使这一点更加清楚。您可以使用几种格式化方法。最适合您的可能是St.Frand方法,它可以追溯到Python 2.6,不过您应该真正考虑升级到Python 3,因为Python 2现在已经过了它的终生日期:

s=raw_input().split()
cmd=s[0]
arg=s[1:]
if cmd!='print':
    formatted = "l.{0}({1})".format(cmd, ",".join(rest))
    eval(formatted)
else:
    print l

您指的是哪个“+”?字符串格式对可读性很好。考虑这个CMD+F{{,联接}}或CMD+= {}。格式化,.CopnAgg或CMD+= %S%,.Cuulalg。这能让事情变得更清楚吗?