首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有人能解释一下这条巨蟒是怎么回事吗

有人能解释一下这条巨蟒是怎么回事吗
EN

Stack Overflow用户
提问于 2020-02-15 16:02:48
回答 3查看 61关注 0票数 0

刚刚开始玩BBC的微音波:bit。其中一个示例具有以下代码行:

flash =图像().invert()*(i/9),用于i在范围(9,-1,-1)

它生成一组图像。为了弄清楚到底发生了什么,我写了一段代码

代码语言:javascript
复制
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 )

代码语言:javascript
复制
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'

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-02-15 16:22:54

invert()中,您需要传递一些int值并返回任何int值。在您的代码中,您不会在您的invert()函数中返回任何、int、浮点值。尝尝这个

代码语言:javascript
复制
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)

这会起作用的

票数 0
EN

Stack Overflow用户

发布于 2020-02-15 16:06:15

您的函数反转不会返回任何内容,所以当您试图乘以它时,就会得到None*float,从而得到您所描述的答案。

票数 0
EN

Stack Overflow用户

发布于 2020-02-15 20:47:45

刚刚发现Image有一个*操作符(不是解包操作符),这是让我感到困惑的东西。

谢谢你的答复

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60240485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档