做这样的事情的正确(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网络元素。我想避免将结果设置为变量,因为这违背了" exists"的目的。此外,我不想第一次执行搜索两次返回true / false,然后再次,如果它是真的,则用它做一些事情。
答案 0 :(得分:1)
这是其中一种情况,有多种方法可以实现。你可以做的一些事情:
将结果视为零到一个元素的集合(如果在这种情况下将其称为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
咬紧牙关并使用中间变量:
<html>