小编The*_*ect的帖子

为什么`如果没有.__ eq __("a")`评估为真?

如果你在Python 3.7中执行以下语句,它将(从我的测试)打印b:

if None.__eq__("a"):
    print("b")
Run Code Online (Sandbox Code Playgroud)

但是,None.__eq__("a")评估为NotImplemented.

当然,"a".__eq__("a")评估True"b".__eq__("a")评估False.

我最初在测试函数的返回值时发现了这个,但在第二种情况下没有返回任何内容 - 因此,函数返回了None.

这里发生了什么?

python string boolean-expression equivalence python-3.x

145
推荐指数
3
解决办法
4652
查看次数

linux内核宏如何用作函数?

这样的标题听起来可能很愚蠢,但是我以前从未见过这样的东西,而且我真的不知道该如何描述它:

因此,我只是编写了第一个内核模块,并且使用了一个链表,该链表使用了linux/list.h头文件。其中有一个宏:

400 /**
401  * list_for_each_entry  -       iterate over list of given type
402  * @pos:        the type * to use as a loop cursor.
403  * @head:       the head for your list.
404  * @member:     the name of the list_struct within the struct.
405  */
406 #define list_for_each_entry(pos, head, member)                          \
407         for (pos = list_entry((head)->next, typeof(*pos), member);      \
408              prefetch(pos->member.next), &pos->member != (head);        \
409              pos = list_entry(pos->member.next, typeof(*pos), member))
Run Code Online (Sandbox Code Playgroud)

而且,我用它是这样的(假设list_head是链表的头,并且list是 …

c linux macros kernel kernel-module

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