上次在python中使用字符串格式化参数,遇到一个运算符优先级的问题,当时也是花了很久才发现问题,记录在此。
当时定义了这么两个变量:
datacenter = int(sys.argv[1]) client = int(sys.argv[2])
也就是说datacenter和client都是int类型的。然后再调用下面这句话的时候出错。
dc_net = self.addSwitch(‘s%d‘ % datacenter+client+1)
提示不能把str和int进行拼接,但我当时想的明明datacenter和client都是int,想加起来为什么说不能拼接呢。
后来分析应该是优先级的问题,上面这句话默认把为%d参数设置为datacenter了,那么这句话就成了一个str+int+1的形式了,自然会报错。
因此改为这样就好了:
dc_net = self.addSwitch(‘s%d‘ % (datacenter+client+1))
时间: 2024-12-17 23:31:41