首页 > 解决方案 > Python:- 在 else 语句之后返回 None 并且不使用 else 有不同的效果吗?

问题描述

所以我一直在使用 python 的 pygal.maps.world 模块做一些工作,并且有一个关于在 else 之后返回 none 语句并且根本不使用 else 的问题。

例如:

from pygal.maps.world import COUNTRIES


def get_country_code(country_name):
  for code, name in COUNTRIES.items():
    if name == country_name:
        return code
    else:
        return None


print(get_country_code('United Arab Emirates'))

这将打印无,但如果我执行以下操作:

from pygal.maps.world import COUNTRIES


def get_country_code(country_name):
  for code, name in COUNTRIES.items():
    if name == country_name:
        return code

  return None


print(get_country_code('United Arab Emirates'))

打印出正确的国家代码,有人可以解释为什么吗?无论是否有 else 语句,代码不应该以相同的方式运行吗?

我发现的另一件事是在运行第一个代码块并尝试获取安道尔的国家/地区代码时,我确实设法获得了正确的国家/地区代码,而其他所有国家/地区都不起作用。这里发生了什么?

编辑:-感谢您的回答,知道这很明显,应该多考虑一下。

标签: pythonpygal

解决方案


在您的第一个示例中,您检查每个元素是否是正确的名称。但如果不是,您会立即退出函数,导致 for 循环不检查数组中的其他项目。

在第二个示例中,您检查元素是否具有正确的名称,如果是,则返回代码。但是如果没有任何元素匹配你返回None。这就是区别。


推荐阅读