Python第一印象

  最近在学python,发现它有许多新颖的地方。我之前学过一些C++,发现Python与C++在些地方很相似,有些地方大相径庭。许多Python的概念,C++中都有相似的。

目前遇到的有几个:

1. “万物皆对象”

  Python中,a = 10, b = 10, 则a,b同引用同一个对象10, 这个“10”被储存在内存某个地方(可以通过id(10)来查看地址)

  在C++中, a = 10, b = 10 中, 10是一个右值, 没有地址(?)。

  另外,在python中, function也是对象,function object + instance object = method object,程序每一个组件都被视为对象,拥有自己的属性和方法

2.类

  1. python类的method第一个参数为self, 类似于C++的this指针,用来指代调用method的对象。

  2. 类有class variable 和 instance variable 两种 data attribute, 前者类似C++的 static data member, 是属于类的,被全员共享的;后者是属于某个instance的,只能被这个instance访问;

最令我惊讶的是:同一个类的instance的instance varible可以数量不同。可以在运行时给某个instance添加某个属性,也可以del掉。而在C++中,类的data member数量是固定的统一的。

  3. 类内也可以定义类,这个跟C++一样

3.赋值

  Python支持多个变量同时赋值:

a, b = b, a  # 将a,b交换

  

4.函数

  最明显的差异是, Python中函数内可以定义函数, 这一个在C++中是禁止的;

5. 推导式

  Python有列表推导式,字典推导式等。在语法上它们更加接近英语,在实践中也能简化代码,提高可读性。

(未完)

6.迭代

  Python没有C/C++风格的迭代(即以以索引变量的改变去遍历序列),只有类似for_each的迭代:

for i in range(1, 22):         # Python 迭代
         ------

for ( int i = 0; i < num; ++i)    # C++风格的迭代
         ------

7. 生成器和惰性计算

  Python中使用yield语句来生产生成器,来返回一个迭代器。它的好处是可以实现惰性计算,即只有被需要的时候,程序才计算结果,而不用事先计算好结果存起来,这样就减少了空间占用。生成器巧妙之处在于,每次执行到yield语句,就返回结果,同时记录变量和语句执行的状态。下一次运行将从上一次的yield语句后的语句开始执行。

(未完)

猜你喜欢

转载自www.cnblogs.com/Tsuko/p/9345704.html