Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python打印带元组和不带元组的字符串的不同行为_Python - Fatal编程技术网

Python打印带元组和不带元组的字符串的不同行为

Python打印带元组和不带元组的字符串的不同行为,python,Python,因此,我有一个脚本(Python2.7),它从oracle数据库中提取一些值,然后在插入或更新数据库时使用这些值。脚本很长,所以我不打算在这里发布所有内容,在几乎所有情况下,事情都如我所期望的那样进行,除了这里: 设备id和mac id通过某种方式从数据库中提取 执行此命令: print "device_id is %s" % device_id print "mac_id is %s" % mac_id print "device_id is %s, mac_id is %s" % (dev

因此,我有一个脚本(Python2.7),它从oracle数据库中提取一些值,然后在插入或更新数据库时使用这些值。脚本很长,所以我不打算在这里发布所有内容,在几乎所有情况下,事情都如我所期望的那样进行,除了这里:

设备id和mac id通过某种方式从数据库中提取

执行此命令:

print "device_id is %s" % device_id
print "mac_id is %s" % mac_id
print "device_id is %s, mac_id is %s" % (device_id, mac_id)
给出了:

device_id is 117281
mac_id is 3C:07:54:4A:D9:B6
device_id is (117281,), mac_id is ('3C:07:54:4A:D9:B6',)
但执行这一点:

print "device_id is %s" % device_id
print "mac_id is %s" % mac_id
print "device_id is %s, mac_id is %s" % (device_id, mac_id)
给出了:

device_id is 117281
mac_id is 3C:07:54:4A:D9:B6
device_id is (117281,), mac_id is ('3C:07:54:4A:D9:B6',)

为什么在第二次执行时提供元组中的变量会添加额外的parantesse、逗号和引号?

因为它们已经是元组了。将它们单独放置,从元组中“提取”它们以便打印

print "device_id is %s, mac_id is %s" % (device_id + mac_id)
print "device_id is %s, mac_id is %s" % (device_id[0], mac_id[0])

尝试打印设备id,您将看到它是一个只有一个元素的元组
(117281,)

这意味着以下内容是相同的:

  • print“device\u id是%s”%device\u id

  • 打印“设备id为%s”%(111,)

这些也是:

  • print“设备\u id是%s,mac\u id是%s”%(设备\u id,mac\u id)
    是 同

  • 打印“设备id为%s,mac id为%s”%((111,),('222')

在这两种情况下,您都可以看到外部元组括号被删除了——元组被解包并映射到输出字符串。但是,在第二种情况下,您又添加了一级括号,然后只解压缩该元组,保留原来的一个元素元组。在第一种情况下使用此选项如下:
print“device_id为%s”((111,))


编辑:我写得太长了,没有看到答案,抱歉:D

谢谢你改进了我问题的格式DOH!好吧,酷,这很有道理。我没有意识到我在查询数据库的子系统中将这些值作为元组返回。太棒了,非常感谢!