python - 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 语句,代码不应该以相同的方式运行吗?
我发现的另一件事是在运行第一个代码块并尝试获取安道尔的国家/地区代码时,我确实设法获得了正确的国家/地区代码,而其他所有国家/地区都不起作用。这里发生了什么?
编辑:-感谢您的回答,知道这很明显,应该多考虑一下。
解决方案
在您的第一个示例中,您检查每个元素是否是正确的名称。但如果不是,您会立即退出函数,导致 for 循环不检查数组中的其他项目。
在第二个示例中,您检查元素是否具有正确的名称,如果是,则返回代码。但是如果没有任何元素匹配你返回None
。这就是区别。
推荐阅读
- vba - 在 Powershell + VBA 中的 pivottabes 字段上使用 showdetail 创建一个新工作表
- c# - How can save pdf genrated file to project folder using asp.net C#?
- python - 选择具有散景的本地文件夹
- tidymodels - 如何在 TidyModel 中为 fit_resample 的 F1 分数添加 beta 参数
- excel - 使用链接到宏的下拉列表
- javascript - 这个功能是做什么用的?
- three.js - glb 网格在旋转threejs时消失
- c - What are the requirements to use __float128?
- react-native - 在 react-native 上为 app.js 添加背景颜色
- mysql - MySQL获取值在列中出现的次数?