Python学习笔记1:

python开发环境配置

关于版本: 2.X和3.X的区别还是挺大的,但是最后肯定新版本会取代旧版本,所以我还是安装了最新的3.5.1

具体安装就没什么好说的了,装完了在命令行里输入python就可以进入python环境了。最后不要忘了在我的电脑里配置下path的环境变量。

编辑器:
网上看了很多人的选择,pycharm功能口碑不错,功能比较强大。不过我现阶段主要还是学习,都是写一些小demo,简单些的编辑器就可以了。正好电脑上有sublime ,就装了些python的插件,用来写写简单的python代码也挺好的。

变量与基本数据类型

python是动态弱类型语言,简单的讲就是变量不区分类型,定义时不用定义类型。从Java、C++等强类型语言过来的确实感觉有点不适应。不过久了就适应了,而且弱类型确实方便了不少。

其基本数据类型有以下几种:

  1. 整型:
    在Python内部对整数的处理分为普通整数和长整数,普通整数长度为机器位长,通常都是32位,超过这个范围的整数就自动当长整数处理,而长整数的范围几乎完全没限制。所以long类型运算内部使用大数字算法实现,可以做到无长度限制。
  2. 浮点型
    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,等等。
  3. 字符串
    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'中文'
中文
  1. 空(None)
    表示该值是一个空对象,空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值

  2. 布尔类型(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]))

还好上面循环里面的代码和层数不多,如果多了些的话确实要多留意些。

  1. 条件判断
    python的if语句和其他语言大概也差不多,就是if后面不用加括号,判断体输入完了后注意加“:”,代码块是4个空格缩进。
    另外python对else if定义了单独的一个关键字:”elif “

  2. while循环
    这个和java语言的基本一致,通过while关键字后面的判断体判断是否进入代码块。在代码块里面可以通过break和continue退出或者继续

  3. for循环
    其实全称应该是for in循环,相当于java里面的for each循环,主要用于循环数据容器,而没有java中的for(;;)的功能

List 与Tuple类型

  1. 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的每一个元素本身也不能变。


未完待续

你可能感兴趣的:(Python学习笔记1:)