python - Python的嵌套 "if-else"与具有 "if"条件的 "and"不同吗?

标签 python if-statement

我最近一直在绞尽脑汁地试图找出一个错误,我开始意识到我在某些方面缺乏对 Python 如何评估语句的理解。

Python 在处理嵌套 if 语句与 if... 和 block 的方式上是否有任何相关差异?

例如:

if profile_username == input_username and profile_password == input_password:
    log_in(loaded_profile)

这与以下有何不同

if profile_username == input_username:
    if profile_password == input_password:
        log_in(loaded_profile)

它们都延迟评估,并且都需要满足两个条件,但除此之外,我不知道它们是否相同。

一个版本会产生一些其他版本不会产生的行为(BUGS???)吗?在这种情况下,仅仅是程序员选择使用哪一个吗?

最佳答案

在这两种情况下,您的 if 逻辑将保持相同,但您的 else 逻辑会有所不同。例如:

if condition_1 and condition_2:
    # something
else:
    # something else

如果 condition_1condition_2 任何一个失败,else 将被执行。

但是如果你的条件语句是这样的:

if condition_1:
    if condition_2:
        # something
    else:
        # something else
else:
    # something else

在这里,您需要为 condition_1condition_2 定义 else block 。如果缺少任何 else block ,您将得到不同的结果。

关于python - Python的嵌套 "if-else"与具有 "if"条件的 "and"不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48140574/

相关文章:

python - tf.data.Dataset 可馈送迭代器,用于训练和推理

c++ - 变量没有被正确比较

C# Switch If 条件来扩展 switch case

batch-file - 如何正确使用 IF 和 GOTO 语句

javascript - 自动折叠可折叠 block

c - 我无法执行在 else if 语句中包含用户输入的整数的程序

python - 删除 `settings.py` 中 celery scheduler 的周期性任务不会删除实际任务

python - Anaconda:如何安全地删除重复的包

python - 在不同主机上并行和后台执行 Fabric 函数

python - 由于 Python 代码中存在制表符,因此删除电子邮件正文中的制表符