python中字符串赋值 逗号,这个作业中逗号在做什么?

Python允许您一次分配多个变量,如下所示:a, b = 1, 2

其工作方式是将赋值a, b的左侧视为一个元组,并将右侧元组1, 2中的每个元素分配给它。在

由于元组只能有一个元素,因此以下方法也适用:

^{pr2}$

多重赋值的右边不一定是元组。任何iterable都可以,只要两边的元素数相同:a, b, c = "three little pigs".split()

如果元素数不匹配:a, b, c = "oh", "no"

。。。你会得到一个ValueError:ValueError: not enough values to unpack (expected 3, got 2)

把以上所有的东西放在一起,你的功能是:def find_project(project_name):

projects = get_projects()

try:

match, = (proj for proj in projects if proj["name"].strip() == project_name)

return match

except ValueError:

return None(proj for proj in projects if proj["name"].strip() == project_name)

。。。如果结果有一个元素,则将该元素赋给match。如果不是,则引发ValueError(并由except子句捕获),则不进行赋值,并返回None。在

有两件事需要注意:在阅读代码时,逗号,很容易丢失。另一种方法是在左侧使用列表语法:[match] = (proj for proj in projects if proj["name"].strip() == project_name)

。。。也有同样的效果。

如果右侧是生成器表达式(或其他类型的iterator),则可以使用带有默认值的^{}:def find_project(project_name):

projects = get_projects()

it = (proj for proj in projects if proj["name"].strip() == project_name)

return next(it, None)

。。。更简短,更易读。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值