小编Shi*_* Xu的帖子

运算符 += 在 Python 中返回什么

原始问题

当我试图在 stackoverflow 上回答另一个人关于Python=+=Python之间的区别的问题时,我遇到了以下问题:

class Foo:
    def __init__(self, value, name="default"):
        self.value = value
        self.name = name
        
    def __add__(self, that):
        return Foo(self.value + that.value)
    
    def __iadd__(self, that):
        self.value = self.value + that.value
        return self
    
    def __str__(self):
        return "name: {}, value: {:d}".format(self.name, self.value)
    
a = Foo(1, 'alice')
b = Foo(2, 'bob')
print(a+=b)
Run Code Online (Sandbox Code Playgroud)

最后一个print电话没有成功,给了我这个:

File "<ipython-input-8-0faa82ba9e4a>", line 3
    print(a+=b)
            ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我不知道为什么这不起作用。也许它与关键字参数传递机制有关?我只是找不到关于这个主题的任何资源,因为重载的__iadd__方法已经返回了一个Foo对象。

************** 更新 ******************

如果我__iadd__像这样更改方法(只需删除return语句):

... …
Run Code Online (Sandbox Code Playgroud)

python variable-assignment

13
推荐指数
2
解决办法
2518
查看次数

gcc 中的 -l 选项

我刚开始读这本书:Advanced Programming in Unix Env​​ironment并尝试编译第一个示例代码,就像在这个线程中一样。虽然使用命令解决了编译问题:


gcc -o myls myls.c -I SCADDRESS/include/ -L SCADDRESS/lib/ -lapue

我在 GCC 手册中查了一下,找不到 gcc 选项 -lxxx 是什么意思,其中 xxx 代表头文件的基本名称(在这种情况下,它是 apue.h)。根据手册,xxx 应该是一些库文件,要么以 .so 结尾的共享目标文件,要么以 .a 结尾的静态库。

谁能解释一下?提前谢谢:)

gcc

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

gcc ×1

python ×1

variable-assignment ×1