专栏名称: OSC开源社区
OSChina 开源中国 官方微信账号
目录
相关文章推荐
程序猿  ·  趣图:新买的鼠标到手了,结果...... ·  5 天前  
程序猿  ·  Python太烂了!比C语言慢71倍!消耗的 ... ·  6 天前  
程序猿  ·  “彻底放弃 ... ·  1 周前  
51好读  ›  专栏  ›  OSC开源社区

Python 的五个有趣彩蛋;你需要了解的 C++ 17 Top 19 新特性

OSC开源社区  · 公众号  · 程序员  · 2017-05-25 08:36

正文


你知道 Python 这五个有趣的彩蛋吗?

请输入标题     bcdef

当一门编程语言是开源的时候,往往会有产生一些搞笑和有趣的东西。通常,这意味着社区的贡献者会为该语言添加一些有趣和特别的彩蛋以及隐藏的特性(当然前提是不会增加在生产环境中使用的风险)。


Python 就是一个很好的例子。作为一门开源的语言,它的社区为其贡献了一些十分幽默的东西。


旁注:如果您想观察彩蛋,请注意,它们只能在第一次工作。如果希望重新运行它们,需要重新启动 Python shell。

请输入标题     abcdefg

Hello World

请输入标题     bcdef

程序员们都熟悉 Hello World 的概念。在大多数情况下,它指的是使用该编程语言编写的最小程序,它会将“Hello World”打印到屏幕。这可能是在学习新的编程语言时首先要做的。


Python 有一个酷酷的隐藏的库,做了一些有点与众不同的事:


请输入标题     abcdefg

April Fool

请输入标题     bcdef

下面的 April fool 玩笑是由 Barry Warsaw 提出的,与他的退休有关。他是一位著名的 Python 开发者,在他宣布正式退休的时候,就诞生了下面这个彩蛋:


请输入标题     abcdefg

由 C++ 转换到 Python

请输入标题     bcdef

'braces'库也是一个具有浓厚程序员风格的玩笑,它在其文档中提到,当在编写 Python 代码时使用这个库可提供使用 C++ 花括号的功能。但当你尝试使用它的时候,你将会看到社区对此的看法:



哈哈哈,以为导入 braces 就可以使用花括号来结束代码块?Python 的答案是:没门儿!

请输入标题     abcdefg

经典的 Python 之禅

请输入标题     bcdef


运行此命令将显示由 Tim Peters 编写的"Zen Of Python(Python 之禅)"。据传这是 Python 中的『八荣八耻』,每个有追求的 Python 程序员都应该谨记于心。



参考翻译:

优美胜于丑陋。
显式胜于隐式。
简单胜于复杂。
复杂胜于难懂。
扁平胜于嵌套。
分散胜于密集。
可读性应当被重视。
尽管实用性会打败纯粹性,特例也不能凌驾于规则之上。
除非明确地使其沉默,错误永远不应该默默地溜走。
面对不明确的定义,拒绝猜测的诱惑。
用一种方法,最好只有一种方法来做一件事。
虽然一开始这种方法并不是显而易见的,但谁叫你不是 Python 之父呢。
做比不做好,但立马去做有时还不如不做。
如果实现很难说明,那它是个坏想法。
如果实现容易解释,那它有可能是个好想法。
命名空间是个绝妙的想法,让我们多多地使用它们吧!

请输入标题     abcdefg

“反重力”漫画

请输入标题     bcdef


输入这行代码,会直接跳转到漫画网页 xkcd。漫画很有意思,一个人漂浮在天空中,他的一位朋友好奇的问他是怎么飞起来的。



对话内容大致翻译:


上图:

“你在飞!怎么做到的?”

“Python!”


下左:

“我昨晚学习了 Python,一切都是那么简单”

“运行 HELLO WORLD 只需要 print "Hello World!"”


下中:

“我还是不明白……动态类型,还是空格?”

“来加入我们吧,编程又再次变得有趣起来了,Python 是一个全新的世界”

“但你是怎么飞起来的?”


下右:

“我只是输入了  import antigravity”

“就这样?”

“我还对药品柜中的所有东西进行了采样比较”(暗指他对比过多种编程语言,但还是觉得 Python 最简单)

“但我想这就是 Python.”

请输入标题     abcdefg


你需要了解的 C++ 17 Top 19 新特性


什么是 C++17?

请输入标题     bcdef

C++17(或 C++1z)是继 C++14 之后 C++ 编程语言 ISO/IEC 标准的下一次修订的非正式名称。C++17 现在功能已齐全,正在成为国际标准的路上。它的规范已于 2017 年 3 月达到国际标准草案的阶段。

请输入标题     abcdefg

C++17 标准化图表

请输入标题     bcdef

请输入标题     abcdefg

C++17 的 19 个新特性

请输入标题     bcdef

  1. 使 static_assert 的文本信息可选

  2. 删除 trigraphs

  3. 在模板参数中允许使用 typename(作为替代类)

  4. 来自 braced-init-list 的新规则用于自动推导

  5. 嵌套命名空间的定义,例如:使用 namespace X::Y { … } 代替 namespace X { namespace Y { … }}

  6. 允许命名空间和枚举器的属性

  7. 新的标准属性:[[fallthrough]], [[maybe_unused]] 和 [[nodiscard]]

  8. UTF-8 字符文字

  9. 对所有非类型模板参数进行常量评估

  10. Fold 表达式,用于可变的模板

  11. A compile-time static if with the form if constexpr(expression)

  12. 结构化的绑定声明,现在允许 auto [a, b] = getTwoReturnValues();

  13. if 和 switch 语句中的初始化器

  14. 在某些情况下,确保通过编译器进行 copy elision(Guaranteed copy elision by compilers in some cases)

  15. 一些用于对齐内存分配的扩展

  16. 构造函数的模板推导,允许使用 std::pair(5.0, false) 代替 std::pair(5.0, false)

  17. 内联变量,允许在头文件中定义变量

  18. __has_include,允许由预处理程序指令检查头文件的可用性

  19. __cplusplus 的值更改为 201703L

请输入标题     abcdefg



推荐阅读

盘点那些评分最高的项目管理工具,不服来战!

Redis 单例、主从模式、sentinel 以及集群的配置方式及优缺点对比

Spring 思维导图,让 Spring 不再难懂(ioc 篇)

一名 40 岁“老”程序员的反思

“放码过来”邀您亮“项”,一不小心就火了!

点击“阅读原文”查看更多精彩内容