# any() is the multi-value version of or
checks = [False, False, True, False]
print(f"any: {any(checks)}")
print(f"manual or: {checks[0] or checks[1] or checks[2] or checks[3]}")
# or for fallback functionsdefget_from_cache(key):
returnNone# cache missdefget_from_db(key):
returnf"db:{key}"defget_from_api(key):
returnf"api:{key}"
result = get_from_cache("user") or get_from_db("user") or get_from_api("user")
print(f"Result: {result}")
# Nested or/anddefaccess_allowed(user, resource):
is_admin = user == "admin"
is_owner = user == resource.get("owner")
is_public = resource.get("public", False)
return is_admin or is_owner or is_public
print(access_allowed("admin", {"owner": "bob"}))
print(access_allowed("alice", {"owner": "bob", "public": True}))
print(access_allowed("alice", {"owner": "bob"}))
Output
Click "Run" to execute your code
'or' chains create fallback patterns: try each option until one succeeds. any() generalizes this to iterables.
Challenge
Try modifying the code above to explore different behaviors. Can you extend the example to handle a new use case?