python开发环境配置
关于版本: 2.X和3.X的区别还是挺大的,但是最后肯定新版本会取代旧版本,所以我还是安装了最新的3.5.1
具体安装就没什么好说的了,装完了在命令行里输入python就可以进入python环境了。最后不要忘了在我的电脑里配置下path的环境变量。
编辑器:
网上看了很多人的选择,pycharm功能口碑不错,功能比较强大。不过我现阶段主要还是学习,都是写一些小demo,简单些的编辑器就可以了。正好电脑上有sublime ,就装了些python的插件,用来写写简单的python代码也挺好的。
变量与基本数据类型
python是动态弱类型语言,简单的讲就是变量不区分类型,定义时不用定义类型。从Java、C++等强类型语言过来的确实感觉有点不适应。不过久了就适应了,而且弱类型确实方便了不少。
其基本数据类型有以下几种:
- 整型:
在Python内部对整数的处理分为普通整数和长整数,普通整数长度为机器位长,通常都是32位,超过这个范围的整数就自动当长整数处理,而长整数的范围几乎完全没限制。所以long类型运算内部使用大数字算法实现,可以做到无长度限制。 - 浮点型
Python的浮点数就是数学中的小数,类似C语言中的double。在运算中,整数与浮点数运算的结果是浮点数浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x109和12.3x108是相等的。浮点数可以用数学写法,如1.23,3.14,-9.01,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。 - 字符串
Python字符串即可以用单引号也可以用双引号括起来,字符串是以''或""括起来的任意文本,比如'abc',"xyz"等等。请注意,''或""本身只是一种表示方式,不是字符串的一部分,因此,字符串'abc'只有a,b,c这3个字符。如果'本身也是一个字符,那就可以用""括起来,比如"I'm OK"包含的字符是I,',m,空格,O,K这6个字符。
如果字符串内部既包含'又包含"怎么办?可以用转义字符\来标识,比如:
'I\'m \"OK\"!'
其表示的是:
I'm "OK"!
转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\表示的字符就是\,可以在Python的交互式命令行用print打印字符串看看:
如果一个字符串包含很多需要转义的字符,对每一个字符都进行转义会很麻烦。为了避免这种情况,我们可以在字符串前面加个前缀 r
,表示这是一个 raw 字符串,里面的字符就不需要转义了。例如:
r'\(~_~)/ \(~_~)/'
Unicode编码:
因为Python的诞生比Unicode标准发布的时间还要早,所以最早的Python只支持ASCII编码,普通的字符串'ABC'在Python内部都是ASCII编码的。
Python在后来添加了对Unicode的支持,以Unicode表示的字符串用u'...'表示,比如:
print u'中文'
中文
空(None)
表示该值是一个空对象,空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值布尔类型(Boolean)
在Python中,None、任何数值类型中的0、空字符串“”、空元组()、空列表[]、空字典{}都被当作False,还有自定义类型,如果实现了nonzero()或len()方法且方法返回0或False,则其实例也被当作False,其他对象均为True布尔值和布尔代数的表示完全一致,一个布尔值只有True、False两种值,要么是True,要么是False,在Python中,可以直接用True、False表示布尔值(请注意大小写)
代码格式与基本语句
说起代码格式,python确实算得上奇葩了,代码块的区分竟然是靠缩进来控制的。在java里我一向是用tab键的,可python可一定要区分清楚tab和空格(最好不要用tab)。
个人觉得为了少写点{}而靠缩进来控制代码 真的不是什么好主意,可是规定就是这样,也没办法了,只能遵守吧
下面是一段简单的代码:
def square_of_sum(L):
sum = 0
for a in L:
t = a * a
sum = sum + t
return sum
print (square_of_sum([1, 2, 3, 4, 5]))
print (square_of_sum([-5, 0, 5, 15, 25]))
还好上面循环里面的代码和层数不多,如果多了些的话确实要多留意些。
条件判断
python的if语句和其他语言大概也差不多,就是if后面不用加括号,判断体输入完了后注意加“:”,代码块是4个空格缩进。
另外python对else if定义了单独的一个关键字:”elif “while循环
这个和java语言的基本一致,通过while关键字后面的判断体判断是否进入代码块。在代码块里面可以通过break和continue退出或者继续for循环
其实全称应该是for in循环,相当于java里面的for each循环,主要用于循环数据容器,而没有java中的for(;;)的功能
List 与Tuple类型
- List
基本的列表结构,因为python是弱类型语言,所以List也是不区分类型的,而且定义一个表时也没有什么关键字,通过[]符号就可以了,如下:
L = ['Tom', 100, True]
也可以创建空表:
empty_list = []
数据访问:
python支持正反两个方向访问,如L[0]是第一个元素,L[-1]是最后一个元素。这负方向访问,这个确实带来了很多方便。不过注意的是,如果索引值大于list长度,就会发生角标越界,程序会crash。
数据添加:
通过append('v')方法可以在list尾端添加元素,而insert(0,'v')就可以在制定位置插入值了,insert角标后面的所有元素,都自动向后移动一位。
数据删除
和插入类似,删除也有两个方法,pop()可以删除尾端的元素,pop(3)可以删除制定index的元素,删除之后,后面的元素会前进一位。
2.Tuple
tuple是另一种有序的列表,中文翻译为“ 元组 ”。tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了。tuple表示如下:
t = ('Adam', True 3)
创建tuple和创建list唯一不同之处是用( )替代了[ ]。
创建单元素tuple
单元素的List可以用[1]这样的格式,那Tuple可以用(1)这种格式吗?
显然这是不可以的,因为()既可以表示tuple,又可以作为括号表示运算时的优先级,结果 (1) 被Python解释器计算出结果 1,导致我们得到的不是tuple,而是整数 1。
所以正确的姿势是(1,),Python在打印单元素tuple时,也自动添加了一个“,”,为了更明确地告诉你这是一个tuple。
List为元素
前面说过Tuple的元素不可变,那如果元素是List呢?
打印一下看看:
>>> t = ('a', 'b', ['A', 'B'])
>>> L = t[2]
>>> L[0] = 'X'
>>> L[1] = 'Y'
>>> print t
('a', 'b', ['X', 'Y'])
可以发现,Tuple中的List元素改变了,可以这么理解:
表面上看,tuple的元素确实变了,但其实变的不是 tuple 的元素,而是list的元素。
tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变。
未完待续