我会随便说,C++ 近年来开始”抄袭” Python 么?我只会说,我在用 C++ 来学习 Python.

不信?来跟着我学?

字面量

Python 早在 2.6 版本中就支持将二进制作为字面量了[1], 最近 C++14 逐步成熟,刚刚支持这么干[2]:

static const int primes = 0b10100000100010100010100010101100;

更不用说 Python 在 1.5 时代就有了 raw string literals 的概念[3],咱们 C++ 也不算晚,C++11里也有了类似做法:

const char* path = r"C:Python27Doc";

Range Loop

Python 写 for 循环是一件非常舒畅的事情:

for x in mylist: print(x);

大家都知道了,C++11里我总算也能做同样的事情了:

for (int x : mylist) std::cout

类型自动推导

Python 中真的有类型的概念吗?(笑

x = "Hello World"print(x)

C++11 也学会了这招,只不过保留了老太太的裹脚布(auto)。

auto x = "Hello World";std::cout

元组

Python 里的元组(tuple)让人羡慕已久,这玩意 Python 从一开始就有了。

triple = (5, "Hello", True)print(triple[0])

好嘛,我来用 C++11 照猫画虎:

auto triple = std::make_tuple(5, "hello", true);std::cout (triple);

有人说了,Python 大法好,还能逆向解析成变量呢

x, y, z = triple

哼,C++难道不行?

std::tie(x, y, z) = triple;

Lists

Python 里,Lists 是内置类型[4],创建一个 list 无比简单:

mylist = [1, 2, 3, 4]mylist.append(5);

以前我们可以说,这有啥,std::vector差不多也能干这事。可 Python 粉较真了,您能像上面那样初始化吗?这话让 Bjarne Stroustrup 老爹听到了,暗自羞愧,于是在 C++11 里整出了个 initializer_list 做出回应[5]。

auto mylist = std::vector;mylist.push_back(5);

可人又说了,Python 里创造个 Dictionary 简单的跟什么一样[6]。

myDict = print(myDict[5])

切,C++ 本身就有 map 类型,现在又多了个哈希表 unordered_map,更像了:

auto myDict = std::unordered_map{ { 5, "foo" }, { 6, "bar" } };std::cout

Lambda 表达式

Python 祭出大神器,1994年就有的 Lambda 表达式:

mylist.sort(key = lambda x: abs(x))

C++11 开始了拙劣的模仿:

std::sort(mylist.begin(), mylist.end(), [](int x, int y){ return std::abs(x)

而 Python 在 2001 年加了一把力,引入了 Nested Scopes 的技术[7]:

def adder(amount): return lambda x: x + amount...print(adder(5)(5))

C++11 不甘示弱,整出了 capture-list 的概念[8]。

auto adder(int amount) { return [=](int x){ return x + amount; };}...std::cout

内置算法

Python 里有诸多内置的强大算法函数,如 filter:

result = filter(mylist, lambda x: x >= 0)

C++11 倒也可以用 std::copy_if 干同样的事情:

auto result = std::vector{};std::copy_if(mylist.begin(), mylist.end(), std::back_inserter(result), [](int x){ return x >= 0; });

这样的函数在 中屡见不鲜,而且都在与 Python 中的某种功能遥相呼应:transform, any_of, all_of, min, max.

可变参数

Python 从一开始就支持可变参数了。你可以定义一个变参的函数,个数可以不确定,类型也可以不一样。

def foo(*args): for x in args: print(x); foo(5, "hello", True)

C++11 增加了对参数包的支持。但与 Python 的不同在于:只能在编译期通过模板来使用,而不像 Python 那样在运行期作为单个对象来使用。

template auto foo(T&&... args) { return std::make_tuple(args...);} auto triple = foo(5, "hello", true);

看到这里,你是否发现用 C++ 学习 Python 也不失为一种很妙的方式呢?

我在学python-你们以为我在学C加加?其实我在学Python!人生苦短!相关推荐

  1. 我在学python-你们以为我在学C++?其实我在学Python!人生苦短!

    你们以为我在学C++?其实我在学Python!人生苦短! 我会随便说,C++ 近年来开始"抄袭" Python 么?我只会说,我在用 C++ 来学习 Python. 不信?来跟着我 ...

  2. 我在学python-你们以为我在学C++?其实我在学 Python

    原标题:你们以为我在学C++?其实我在学 Python 我会随便说,C++ 近年来开始"抄袭" Python 么?我只会说,我在用 C++ 来学习 Python. 不信?来跟着我学 ...

  3. ❤️大佬都在学什么?Python爬虫分析C站大佬收藏夹,跟着大佬一起学, 你就是下一个大佬❤️!

    ❤️大佬都在学什么?Python爬虫分析C站大佬收藏夹,跟着大佬一起学,你就是下一个大佬❤️! 前言 程序说明 数据爬取 获取 CSDN 作者总榜数据 获取收藏夹列表 获取收藏数据 爬虫程序完整代码 ...

  4. 没有统计学基础可以学python-没错!经典教材《统计学习导论》现在有了 Python版!...

    点击关注"Python学习与数据挖掘" 更多超级干货第一时间推送给你哦!!! <统计学习导论>很经典,但用的是 R 语言,没关系,这里有份 Python 版习题实现. ...

  5. python从入门到精通pdf百度云下载-跟老齐学Python从入门到精通 电子版(pdf格式)...

    跟老齐学python从入门到精通是一款由老齐写作的Python电子书籍.书籍讲述了零基础读者的Python入门教程,内容涵盖了Python的基础知识和初步应用,需要的赶紧在巴士下载站下载吧! 目录: ...

  6. 不是程序员学python有什么用-程序员的基本功:为什么非要用Python,其他语言不好吗?...

    原标题:程序员的基本功:为什么非要用Python,其他语言不好吗? Python能够这么火其中一个重要的原因是数据分析带起来的.Python的优点有很多,同样一个功能,其他语言需要写100行,而Pyt ...

  7. python学到什么程度可以写爬虫-月薪2万的爬虫工程师,Python需要学到什么程度?...

    非计算机专业,正在自学python,很多教程里提到的网站的爬虫都会写了.比如拉勾网,豆瓣,实习僧,京东,淘宝,某妹子图等等--但是因为不是计算机专业的,也没学所谓的四大名著,不知道那四大对找工作重要吗 ...

  8. python语言有什么用-Python到底有什么用?为什么那么多人都在学Python?

    原标题:Python到底有什么用?为什么那么多人都在学Python? 现如今无论是工作汇报.产品设计.后台设计甚至是数据大屏,越来越多的行业都离不开与数据打交道! Excel作为数据必备工具,一直以来 ...

  9. python入门编程-对没有编程基础的人来说,直接学Python入门IT合适吗?

    原标题:对没有编程基础的人来说,直接学Python入门IT合适吗? 对于0基础的人,直接学 Python 编程合适吗? 小编只能说非常合适,因为在目前的编程语言中,Python的抽象程度是最高的,是最 ...

最新文章

  1. css变成块级元素_探讨行内元素转换为块级元素_html/css_WEB-ITnose
  2. string来存放二进制数据
  3. 实战并发编程 - 07循环等待死锁问题
  4. 爱我别走:产品大改版时,如何避免用户流失?
  5. r语言参数fig=c(),干货︱R语言绘图—基础图形参数整理
  6. 超越95%面试者的秘籍 part 1
  7. SharePoint2013开发环境搭建(完整版:图文并茂)
  8. 在 .NET 6 中使用 DATEONLY 和 TIMEONLY
  9. 这个时代最重要的技能之一(数据分析)
  10. 一文教你轻松搞定ANR异常捕获与分析方法
  11. Redis 高可用性实践
  12. iPhone开发知识和项目
  13. python 计算机程序设计-某高校计算机编程教授教你如何快速入门python,一文带你进入编程...
  14. Oracle 11g vs 12c 内存、优化器等默认参数对比
  15. mysql一张表能存多少条数据不影响性能_MySQL|优化案例两则
  16. 软件测试报告模板什么样的?
  17. 微信小程序开发者文档 开放文档 地址
  18. H5打造属于自己的视频播放器(JS篇1)
  19. Emlog最新付费模板带会员 做资源网不错
  20. 【Python爬虫实战】用urllib与服务端交互(发送和接收数据)

热门文章

  1. 设计模式:访问者(Visitor)模式
  2. Python Socket TypeError: a bytes-like object is required, not 'str' 错误提示
  3. React事件处理函数传参问题
  4. Mongodb常用增删改查语法
  5. 【USACO Mar08】 奶牛跑步 A-star k短路
  6. 利用yum下载软件包的三种方法
  7. assert()函数用法总结——转
  8. ASP.NET 配置文件的层次和继承关系
  9. python代码示例500行源代码-500行Python代码打造刷脸考勤系统,其实也就那么简单...
  10. python爬虫图片-如何用Python来制作简单的爬虫,爬取到你想要的图片