最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Python中为什么不能在表达式中赋值?

    正文概述    2020-10-14   270

    Python中为什么不能在表达式中赋值?

    为什么Python不能在表达式中赋值?

    许多习惯于C或Perl的人抱怨,他们想要使用C 的这个特性:

    while (line = readline(f)) {
        // do something with line
    }

    但在Python中被强制写成这样:

    while True:
        line = f.readline()
        if not line:
            break
        ...  # do something with line

    不允许在 Python 表达式中赋值的原因是这些其他语言中常见的、很难发现的错误,是由这个结构引起的:

    if (x = 0) {
        // error handling
    }
    else {
        // code that only works for nonzero x
    }

    错误是一个简单的错字:x = 0 ,将0赋给变量 x ,而比较 x == 0 肯定是可以预期的。

    已经有许多替代方案提案。大多数是为了少打一些字的黑客方案,但使用任意或隐含的语法或关键词,并不符合语言变更提案的简单标准:它应该直观地向尚未被介绍到这一概念的人类读者提供正确的含义。

    一个有趣的现象是,大多数有经验的Python程序员都认识到 while True 的习惯用法,也不太在意是否能在表达式构造中赋值; 只有新人表达了强烈的愿望希望将其添加到语言中。

    有一种替代的拼写方式看起来很有吸引力,但通常不如"while True"解决方案可靠:

    line = f.readline()
    while line:
        ...  # do something with line...
        line = f.readline()

    问题在于,如果你改变主意(例如你想把它改成 sys.stdin.readline() ),如何知道下一行。你必须记住改变程序中的两个地方 -- 第二次出现隐藏在循环的底部。

    最好的方法是使用迭代器,这样能通过 for 语句来循环遍历对象。例如 file objects 支持迭代器协议,因此可以简单地写成:

    for line in f:
        ...  # do something with line...

    更多Python知识,请关注Python视频教程!!


    起源地下载网 » Python中为什么不能在表达式中赋值?

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元