还有另一种方法来编写这段代码吗?这似乎很难理解

is there another way to write this code?this seems pretty hard to understand

我在 youtube 上的 OpenCV 课程中看到了这个,但没听懂。 有人可以解释这是什么吗?有没有更简单的方法来编写这部分?

import cv2
event = [i for i in dir(cv2) if 'EVENT' in i] 

那叫list comprehenstion。它类似于

import cv2

event = []
for i in dir(cv2):
    if 'EVENT' in i:
        event.append(i)

dir 用于从 cv2 获取所有有效属性,然后如果当前属性 (i) 在其名称上有一个 EVENT 那么这将存储在 event.

下面的代码将打印 ['EVENT_1', 'EVENT_3'].

class CV2:
  EVENT_1 = 1
  two = 2

  def EVENT_3():
    return 3

cv2 = CV2()
print([i for i in dir(cv2) if 'EVENT' in i])

dir命令是Python(docs)中的built-in命令,用于列出对象上的所有属性。

因此此命令循环遍历 cv2 中的所有属性并过滤名称中包含 'EVENT' 的属性。

为了使其更具表现力,我将列出您感兴趣的 EVENT 属性