之前接触过一点点Python,知道它是一门比较抽象的高级语言,功能十分强大,不过一直没有抽出时间系统的学习,直到近些天才开始学习,在这里就将学习的过程记录一下,一方面为其它学习的人提供参考,另一方面梳理自己接触到的知识。
概述
学习的第一步是搜集资料,网上的资料比较零碎,如果有一本书,将会对我们系统学习大有帮助,如果没有,也没关系,我查阅了网上的一些资料,对比之后,向大家推荐“廖雪峰老师的Python学习网站”和Python的document,相比于网络上零碎的知识,廖老师的网站则很有条理,适合连续学习。而Python的document则是最权威的第一手资料,只不过其组织结构不适合初学者,而且是英文文档。当然,如果想要把Python学的炉火纯青,细细研读document是必不可少的。
廖雪峰老师的Python学习网站
Python document
梳理
废话不多说,这里给出自己这些天学习的知识的梳理。
Python2与Python3
两者是不兼容的,你没有看错,是不兼容的,虽然Python3是新的版本,但是它的运行速度却更慢,不过速度从来不是Python追求的目标,Python追求的是代码的简洁,如果你是初学者,那么暂时不必关注它们的区别,选择其中一个版本学习即可,个人推荐Python3,新版本总有它的原因。
如果你很想知道他们的区别,可以参考以下文章。
python2与Python3的区别
What’s New in Python3
环境配置
只需要下载一个安装包,里面包含了解释器,shell,manuals,和document,其中shell是一个交互式解释器,和MATLAB非常像
Python变量
>>> s=1236186348
>>> type(s)
<class 'int'>
>>> i=1.0001
>>> type(i)
<class 'float'>
>>> a="hkjjfdk"
>>> type(a)
<class 'str'>
Python是一种OOP语言,里面的所有变量都是Object,对于每一个变量,生来都有三个属性,identity,type和value,我们可以认为,identity就是变量在内存中的地址,变量的type就是我们调用type()的返回值,比如上面的’int’,’float’,’str’,而变量的value就是我们生成这个变量时赋给它的值,如上面代码中s的value是1236186384,i的value是1.001,a的value是”hkjjfdk”。
同时Python是一种弱类型的语言,定义变量时候不必显式说明其类型,你的表达方式决定了它的类型,每种类型都有其对应的表达方式,下面一小节会总结出常用的类型的表达方式。
常用变量类型及其表示
变量类型 | 表示 | 备注 |
---|---|---|
None | None | 用于函数返回空值,它的value是False |
NotImplemented | NotImplemented | 有这个类型,但是暂时还没搞明白怎么使用 |
Ellipsis | … | 省略号,它的value是True |
int | 1,0b0011,0xFFFF,int(1.001) | 整数,有限大 |
bool | True,False,bool(1) | 非真即假 |
float | 1.234,.001,1.,10e10,10e-10 | 浮点数,包含小数点即为浮点数,不分单精度和双精度 |
complex | 1+2j,complex(1,2) | 复数,可以使用data.real和data.imag来访问其实部和虚部 |
str | ‘c’,”c”,”test”,’test’,chr(65) | 是一个有序的序列,不可变对象(immutable),可以通过下表索引,可迭代,但不是迭代器 |
tuple | (1,2,”jkhsf”),(1,) | 当tuple只有一个元素的时候,注意要有逗号,有序序列,不可变对象,可以通过下表索引,可迭代,但不是迭代器 |
bytes | b’abc’,bytes(“jksj”.encode()) | 字节数据,有序序列,可以通过下标索引,不可变,可迭代,但不是迭代器 |
list | [1,2,[1,2,”lsjf”]] | 列表,列表的元素任意,还可以是列表,有序序列,可以通过下标访问,可变对象,可迭代,但是不是迭代器 |
bytearray | bytearray(b”hjh”) | 有序序列,可以通过下标索引,元素必须是0~255的整数,可变对象,可迭代,但不是迭代器 |
set | {1,2,3,4},set([1,2,3]),set((1,2,3)) | 无序序列,元素不可重复,不能索引,可变对象(使用Add()添加元素),可迭代但不是迭代器 |
frozenset | frozenset({1,2,3}) | 与set相比,唯一区别就是这事不可变的 |
dict | {“liming”:80,”xiaohong”;90} | 元素是key:value对,可以使用key进行索引,内部使用hash算法实现key不能是可变类型,可迭代,但不是迭代器 |
下面解释一下上表中反复提到的一些术语与名词:
有序序列(sequences):与集合(set)相对应,其中的元素是有顺序的,也是可重复的。
可变(mutable)与不可变(immutable):是说能否直接改变其value,list可以直接改变,如L[1]=1,但是tuple就不能,其它类型同理,其中set因为不能索引所以只能通过Add()方法添加元素。
可迭代(iterable)特指使用isinstance(x,Iterable)返回True的类型,如果可迭代,则可以使用如for x in [1,2,3,4]来进行遍历。
迭代器(Iterator)特指使用isinstance(x,Iterator)返回True的类型,如果是迭代器,则可以使用next()逐个返回其值。
Python中还有其他一些类型,我还没有十分明白,有兴趣的话可以查阅python document
代码与层次关系
>>> for i in [1,2,3,4,5,6]:
if i>3:
print(i-3)
else:
print(i+3)
4
5
6
1
2
3
如上例所示,代码的缩进表示它的层次关系,相同缩进的代码处于相同的层次,冒号则表示下一行会有缩进。
结束语
文中给出几处链接,再次对其表示感谢,感谢他们愿意花时间分享自己的知识。
作为一个新手,纰漏差错在所难免,如有表述不当之处,还请及时指正,多多交流,共同进步。