我在玩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
属性,而在第二个示例中不需要它来返回键的值?你知道吗
在第一个例子中。你知道吗
form现在是一个类型为
FieldStorage
的对象。这个对象可以像字典(object[key]
)一样访问,但是它将返回一个对象,这与示例2中只包含字符串的普通字典不同。在示例1的字典式访问中返回的对象必须被告知您希望如何显示它,或者如何访问它,在本例中,您希望对象value
。你知道吗为了更好地理解这一点,您可以尝试一些动态调试。你知道吗
通过迭代
cgi.FieldStorage()
中的项,您可以看到它们是什么类型的对象。也许试着玩一个单独的对象,看看它是如何工作的?你知道吗顺便说一句,如果对象有} 的信息
__str__
函数,您可能不需要.value
来获取更多关于classes和^{它取决于
form
dict中存储的内容在示例1中,它是一个相当复杂的对象,显然无法以所需的方式转换为字符串。你知道吗
示例2的dict条目只是字符串,因此可以直接使用它们。你知道吗
相关问题 更多 >
编程相关推荐