Python 2.7.10(默认值,2015年9月17日,03:50:35) linux2上的[GCC 4.4.7 20120313(Red Hat 4.4.7-11)]
<kendo-datepicker [(value)]="event.date" id="date" name="date" style="width: 100%;" (valueChange)="handleChange($event)"></kendo-datepicker>
<kendo-timepicker [(value)]="event.startTime" id="startTime" name="startTime" style="width: 100%;" (valueChange)="handleChange($event)"></kendo-timepicker>
<kendo-timepicker [(value)]="event.endTime" id="endTime" name="endTime" style="width: 100%;" (valueChange)="handleChange($event)"></kendo-timepicker>
vs
>>> def f():
... return True
...
>>>
>>> a,b = f()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'bool' object is not iterable
为什么有区别?
答案 0 :(得分:2)
这是因为bool
对象是不可迭代的,即使bool
对象是可迭代的,它也会执行与第二个示例相同的操作。
示例:
for i in True:
print(i)
引发和错误:
Traceback (most recent call last):
File "C:\Users\rep\Desktop\code\so.py", line 3517, in <module>
for i in True:
TypeError: 'bool' object is not iterable
但是:
for i in 'True':
print(i)
返回:
T
r
u
e
还有:
解决他们的问题:
a,b = f(),f()
正如@ggorlen所说,做:
def f(): return "Tr"
然后:
a, b = f()
答案 1 :(得分:0)
TypeError
表示“这种对象永远不能在这种情况下使用”,而ValueError
表示“这种对象可以在这种情况下使用,但是这种对象有错误的值”。在这种情况下,不能重复bool
(永远(按值顺序处理bool
值意味着什么?),所以它是TypeError
。
str
。 str
是代表字符串中每个字符的长度为1 str
的序列,因此'True'
迭代为'T'
,'r'
,'u'
和'e'
;总共有四个值,但是当您需要填充两个变量时,只有长度为2的str
有效,而所有其他str
都有无效值,因此ValueError
。如果您提供了更多要分配的名称,例如a, b, c, d = f()
,或者字符串较短,例如"Tr"
,该代码可以正常运行。