当前位置: 首页 > 面试题库 >

在一个陈述中结合使用“ and”和“ or”如何工作?

谷梁昊空
2023-03-14
问题内容

由于某种原因,此功能使我感到困惑:

def protocol(port):
    return port == "443" and "https://" or "http://"

有人可以解释幕后发生的事情的顺序,以便按部就班地完成这项工作。

在尝试之前,我对此是这样理解的:

要么A)

def protocol(port):
    if port == "443":
        if bool("https://"):
            return True
    elif bool("http://"):
        return True
    return False

或B)

def protocol(port):
    if port == "443":
        return True + "https://"
    else:
        return True + "http://"

这是Python中的一种特殊情况,还是我完全误解了语句的工作方式?


问题答案:

这是一种古老的习语;插入括号以显示优先级,

(port == "443" and "https://") or "http://"

x and y返回y是否x为真,x如果x为假;a or b反之亦然,a如果是空的,则返回,否则返回b

因此,如果port == "443"为true,则返回的RHS
and,即"https://"。否则,该元素and为false,因此or起作用并返回 RHS “ http://” 。

在现代Python中,翻译这种古老习语的更好方法是:

"https://" if port == "443" else "http://"


 类似资料:
  • 问题内容: 我想在CI中组合AND OR mysql查询。我已经看过这个线程:http : //codeigniter.com/forums/viewthread/92818/。但是他们没有提供确切的解决方案。 如何严格使用CI框架创建以下查询? (我可以轻松地创建查询而无需使用方括号,但是它不是同一查询。) PS:这只是一个示例查询,即使没有意义,也不建议将查询的整个OR部分写在一个内。 编辑:

  • 问题内容: 我想在Monoose中将两个OR查询与AND结合在一起,例如以下SQL语句: 我在NodeJS模块中尝试了此操作,该模块仅从主应用程序获取模型对象: 但这是行不通的,所有OR条件都将像下面的SQL语句一样连接在一起: 如何在猫鼬中结合AND 和AND 的两个条件? 问题答案: 直接按以下方式创建查询对象可能是最简单的: 但是,您也可以使用最新的3.x Mongoose版本中提供的帮助程

  • 问题内容: 我有以下SQL语句: 我读过我可以使用括号来完成此操作,但我想知道这是否有效: 或者 问题答案: 这两个都是有效的,但是由于优先级高于,因此它们的含义有所不同: 您的第一个带括号的查询将选择类型为3、4、5的已删除行 第二个带括号的查询将选择类型为3、5的所有行,以及类型为4的已删除行。这与不带括号的原始查询的含义相同。 您可以使用operator完全避免混淆,如下所示: 或者如果您想

  • 本文向大家介绍求结果(and or or)相关面试题,主要包含被问及求结果(and or or)时的应答技巧和注意事项,需要的朋友参考一下

  • 我需要合并两个数据帧。为了确保行是唯一的,我需要在合并之前验证“Name”和“Age”是否匹配。我将组合用作主键。这是我的密码: 当我使用多个键(“姓名”和“年龄”)时,这是一个“和”或“或”匹配。我只希望它在“Name”和“Age”匹配时合并,而不是只在“Name”或“Age”匹配时合并。我似乎在文档中找不到这一点,我得到了一些混合的结果。 更新:由于数据原因,我确实需要进行左连接。右边的表是我

  • 问题内容: 如该问题所述,我试图制定一个查询,该查询在列结果中包含一个case语句,然后我想将该列包含在查询的group by语句中。举一个具体的例子,这几乎是我查询的样子: 在来到这里之前,我检查了一些网站,包括该网站,以尝试解决我的问题。我尝试在链接的网页中显示“ like”之后添加另一个别名,但是没有运气。我继续收到的错误消息如下: 是否还有其他人遇到我所面临的问题,并且能够在声明的结果上使