1. features

Python无需声明类型 Python Python的Iterable对应Java的Iterable Python中的generator对应Java的Stream Python使用 for in 进行循环

2. 控制语句

2.1. generator

2.2. 查看类型

Python使用type()函数查看对象类型,Java使用.getClass()

2.3. 数据类型

布尔类型表示为bool,而不是Java的boolean

bool类型的值为首字母大写的True或False

isinstance(obj, type) 同Java的instanceOf()

2.4. 下划线开头

__foo__: 这只是一个约定,是 Python 系统使用不会与用户名冲突的名称的一种方式

_foo: 这只是一个约定,是程序员指示变量是私有的(无论在 Python 中是什么意思)的一种方式

__foo: 这具有真正的意义:解释器用 _classname__foo 替换这个名称,以确保该名称不会与另一个类中的相似名称重叠。

2.5. __init__与 __call__

2.6. 列表与数组

Python也支持列表(list)类型和数组(array)类型

列表是由一系列按特定顺序排列的元素组成,可以将任何东西加入列表中,其中的元素之间没有任何关系;

Python中的列表(list)用于顺序存储结构。它可以方便、高效的的添加删除元素,并且列表中的元素可以是多种类型。

数组也就是一个同一类型的数据的有限集合。

列表list与数组array的相同点是都可以根据索引来取其中的元素

列表list与数组array的不同点:

  • 列表list中的元素的数据类型可以不一样。数组array里的元素的数据类型必须一样;

  • 相对于array,列表会使用更多的存储空间

实际开发中很少使用array,需要数组的场景中更多地会使用Numpy的数组

Python中的List时间复杂度与Java的ArrayList一样

列表获取子列表比较简单可以使用list[0:2]的方式

2.7. list vs tuple

list与tuple都可以存储多个不同类型的数据,但tuple是不可变的。

编写Java代码时有时希望方法能返回彼此关联的多个数据(例如返回一个人的性别和年龄),一种方式是将这些数据封装为一个实体类, 另一种方式是返回一个集合或者数组,这些方法实际上都不及tuple更合适。

2.8. 类

Python所有变量都有对应的类,比如int类,没有Java中所谓的基础类型

没有访问限定符,依靠方法名实现,.以开头的变量(\var特殊变量除外) 不能直接用名字访问; 以_开头的变量暗示不要去访问,但不限制直接访问. 以开头的变量其实可以用_className__var来访问

Python支持多继承,多重继承时, 若多个父类中有相同的方法, 则排在前的父类将覆盖后面的,则越靠前越”主类”. 即使主类的方法源自父类的父类, 也依然优先.

同样object类是所有类的父类

2.9. 打印对象

定义 __str__ 函数,详情参考 官方文档

id(object)查看对象的内存地址

2.10. 对象比较

内存地址相等和值相等

2.11. Import

2.12. 依赖管理