我正在玩python和cgi,并想知道为什么以下两个例子之间存在差异:
示例1 (部分)
form = cgi.FieldStorage()
for field in form.keys():
sys.stdout("%s ----> %s<br />" % (field, form[field].value))
示例2
form = {'one': '1', 'two': '2', 'three': '3'}
for field in form.keys():
sys.stdout("%s ---> %s\n" % (field, form[field]))
为什么在第一个示例中需要.value
属性,但在第二个示例中,您不需要它来返回键的值?
答案 0 :(得分:1)
这取决于form
词典中存储的内容。
在示例1中,它是一个相当复杂的对象,显然无法以所需的方式转换为字符串。
示例2的dict条目只是字符串,因此可以直接使用它们。
答案 1 :(得分:0)
。
form = cgi.FieldStorage()
form现在是FieldStorage
类型的对象,这个对象可以像字典(object[key]
)一样被访问,并且它将返回一个对象,但是,与示例2中的普通字典不同,它包含只是字符串。在示例1中类似字典的访问中返回的对象必须告知您要如何显示或访问它,在这种情况下,您需要对象value
。
为了更好地理解这一点,你可以尝试一些即时调试。
通过遍历cgi.FieldStorage()
中的项目,然后您可以看到它们是什么类型的对象。也许尝试玩一个单独的对象,看看它是如何工作的?