值属性,为什么有时需要?

2024-05-16 01:03:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我在玩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属性,而在第二个示例中不需要它来返回键的值?你知道吗


Tags: inbrform示例fieldforvaluestdout
2条回答

在第一个例子中。你知道吗

form = cgi.FieldStorage()

form现在是一个类型为FieldStorage的对象。这个对象可以像字典(object[key])一样访问,但是它将返回一个对象,这与示例2中只包含字符串的普通字典不同。在示例1的字典式访问中返回的对象必须被告知您希望如何显示它,或者如何访问它,在本例中,您希望对象value。你知道吗

为了更好地理解这一点,您可以尝试一些动态调试。你知道吗

通过迭代cgi.FieldStorage()中的项,您可以看到它们是什么类型的对象。也许试着玩一个单独的对象,看看它是如何工作的?你知道吗

顺便说一句,如果对象有__str__函数,您可能不需要.value来获取更多关于classes^{}的信息

它取决于formdict中存储的内容

在示例1中,它是一个相当复杂的对象,显然无法以所需的方式转换为字符串。你知道吗

示例2的dict条目只是字符串,因此可以直接使用它们。你知道吗

相关问题 更多 >