做这样的事情的正确(Pythonic)方法是什么?
var = 'The quick brown fox'
def exists(query, string):
if query in string:
return query
else:
return None
if thing = exists('fox', var):
print(thing.upper())
这是我的示例,但我真正想做的是检查 Selenium Web 元素是否存在。我想避免将结果设置为变量,因为这违背了“存在”的目的。另外,我不想执行两次搜索,第一次返回 true/false,然后再次执行搜索,如果它是 true,则用它做一些事情。
这是一种有不止一种方法可以实现的情况。您可以做一些事情:
将结果视为零到一个元素的集合(在这种情况下,如果您将其称为 find_one
之类的名称,则更有意义):
def find_one(query, string):
if query in string:
return [query]
return []
然后您可以在 for
循环中使用该函数:
for existing_element in find_one(query, string):
# Do something with existing element
break
else:
# Here if we don't have any elements (note the `break` above)
传递回调作为第一个参数:
def if_exists(cb, query, string):
if query in string:
cb(query)
def run_on_valid_query(q):
# Do something with q
if_exists(run_on_valid_query, query, string)
硬着头皮使用中间变量:
result = extract_from(query, string)
if result: # Do work here
我是一名优秀的程序员,十分优秀!