手机网站免费做推广,网站开发主流技术线路介绍,班级网站源代码下载,深圳电器公司官网【python-3.8.0 新特性之赋值表达式】 赋值表达式的语法是这样的“ name : expression ”#xff0c;形式上看和赋值语句 “ ” 差不多#xff0c;就作用上来看也雷同。也就是说 “:” 不是必不可少的#xff0c;它只是一个锦上添花的新语法。 【1、例子】 假设我们要对列表…【python-3.8.0 新特性之赋值表达式】 赋值表达式的语法是这样的“ name : expression ”形式上看和赋值语句 “ ” 差不多就作用上来看也雷同。也就是说 “:” 不是必不可少的它只是一个锦上添花的新语法。 【1、例子】 假设我们要对列表中的元素个数进行判断当其大于 3 个的时候打印出提示信息用老的语法我们可以这样写。 #!/usr/bin/env python3if __name__ __main__:ls [1,2,3,4,5]if len(ls) 3: # 第一次计算 len(ls)print(fls is too long ({len(ls)} elements,expected 3)) # 第二次计算 len(ls) 可以看到在上面的代码中我们重复的计算了 len(ls) 虽然 python 内部对于 len(ls) 会有一些优化操作但是我们并不想重复自己要优化办法也是有的把 len(ls) 前置一下就行。 #!/usr/bin/env python3if __name__ __main__:ls [1,2,3,4,5]n len(ls) # 第一次计算 len(ls)if n 3:print(fls is too long ({n} elements,expected 3)) # 直接使用变量 n 省去了一次计算过程 【2、用新特性重写】 感觉说什么都是在注水直接上代码 #!/usr/bin/env python3if __name__ __main__:ls [1,2,3,4,5]if (n:len(ls)) 3: # 只要计算一次print(fls is too long ({n} elements,expected 3)) # 直接使用赋值表达式中的 n 同样也省去了一次计算 【3、两种写法的比较】 优劣分析 # 写法 一
#!/usr/bin/env python3if __name__ __main__:ls [1,2,3,4,5]n len(ls)if n 3:print(fls is too long ({n} elements,expected 3))# 写法 二
#!/usr/bin/env python3if __name__ __main__:ls [1,2,3,4,5]if (n:len(ls)) 3:print(fls is too long ({n} elements,expected 3)) python 这门语言最好的一个地方就在于它的一致性不管是专家还是初生牛犊只要一看到他人的代码大致就可以猜到他接下来想做什么久而久之同一类型的问题就有了最 pythonic 的写法了。 第一种写法当我们看到 “n len(ls)” 时即不能回答作者想要用 n 来做什么也不能回答“后面的代码一定会用到 n 吗”这样的问题要解答这些问题都要要求我们往下看代码。 第二种写法当我们看到 “if (n:len(ls)) 3:” 一来我们直接可以看出这个 if 依赖于 n 的值二来后面的代码也非常有可能会用到 n 如果不用的话直接写成 “if len(ls) 3:” 不就行了吗 总结把正确的属性用在正确的地方是可以提高代码可读性的。 【4、: 与 的关系】 看官方的意思 “:” 是作为 “” 的一个补充而存在的并不是想用 “:” 替换掉 “”下面看一下它两是互补的一个例子 #!/usr/bin/env python3if __name__ __main__:x 5print(fx {x})y : 5 # SyntaxError: invalid syntaxprint(fy {y})#这样的写法是会报语法错误的我觉得这里体现了官方的两个重要的思想# 1、可以用 解决的事就不要用 : 防止引起混乱# 2、对于一个给定的问题最 pythonic 的写法通常只有一种
(z : 5)print(fz {z}) 【5、新写法带来的最佳实践】 # 一 简化 os.fork
if pid : os.fork():# Parent code
else:# Child code# 二 直接到把 socket 对象的 read buffer 读完为止
while data : sock.recv(8192):print(Received data:, data) 【转自】 https://www.sqlpy.com/blogs/books/2/chapters/10/articles/51 转载于:https://www.cnblogs.com/JiangLe/p/11180376.html