刚刚开始玩BBC的微音波:bit。其中一个示例具有以下代码行:
flash =图像().invert()*(i/9),用于i在范围(9,-1,-1)
它生成一组图像。为了弄清楚到底发生了什么,我写了一段代码
class Image:
def __init__(self,*args):
print ("init")
for a in args:
print (a)
def invert(self, *args):
print ("invert")
for a in args:
print (a)
flash = [Image().invert()*(i/9) for i in range(9, -1, -1)]
print ( flash )产
python3 test.py
init
invert
Traceback (most recent call last):
File "test.py", line 14, in <module>
flash = [Image().invert()*(i/9) for i in range(9, -1, -1)]
File "test.py", line 14, in <listcomp>
flash = [Image().invert()*(i/9) for i in range(9, -1, -1)]
TypeError: unsupported operand type(s) for *: 'NoneType' and 'float'谢谢
发布于 2020-02-15 16:22:54
在invert()中,您需要传递一些int值并返回任何int值。在您的代码中,您不会在您的invert()函数中返回任何、int、或浮点值。尝尝这个
class Image:
def __init__(self,*args):
print ("init")
for a in args:
print (a)
def invert(self, *args):
print ("invert")
for a in args:
return a
flash = [Image().invert(1,)*(i/9) for i in range(9, -1, -1)]
print (flash)这会起作用的
发布于 2020-02-15 16:06:15
您的函数反转不会返回任何内容,所以当您试图乘以它时,就会得到None*float,从而得到您所描述的答案。
发布于 2020-02-15 20:47:45
刚刚发现Image有一个*操作符(不是解包操作符),这是让我感到困惑的东西。
谢谢你的答复
https://stackoverflow.com/questions/60240485
复制相似问题