一直在做java,但是现在研究openstack,有研究源码提供API的任务,所以先看python基础,别到时侯干着急,下面只是我看书时候的一些笔记以及动手做时候的截图,并没有什么自己特别的思考整理,也就是说是给自己看的,误入的请绕行。
学习一门语言,肯定首先要了解它的背景,与其它语言简单的比较,看它最适合应用的范围地方。第二点就是要学习语言细节,包括语法、数据结构、开发环境等一系列。再往深入了说,是要往它的设计思路上面考虑。
现在只是看它的语言细节。
python知识点,由于基础教程这本书当时粗略的看过一遍,所以,和python核心编程这本书对比着看。
一 基础知识
1:在3.0中,1/2 的值是0.5,要想实现整除操作,必须要用双斜线,所谓的整除,就是结果保留整数位上的数字。在用双斜线的情况下,浮点数也会执行整除。
2:取余运算&幂
3:变量,想要使用变量,直接赋值就可以了,变量名可以包含字母数字下划线,但是不能以数字开头。
4:语句是做某事,而表达式是某事
5:input函数
当输入第一行,然后回车的时候,第二行如下,然后可以在光标处输入数字了
6:if语句
if后面跟判断表达式,然后加上冒号,然后加上后面的逻辑
在解释器里面执行,需要按两次回车才会执行
7:函数
幂函数 pow()、四舍五入函数round(),绝对值函数abs(),还有向下去整函数floor(),例如32.9 floor一下得到32.与floor函数相对的是ceil函数,这个函数把32.9得到33.
8:模块
使用import。或者使用from math import sqrt,后面就可以直接写函数名字而不必要写模块名字了。
也可以使用变量名来引用函数
除非必要,还是直接使用import的好,如果使用了from ... import
..这个,别的都没法子用了。
9:保存并执行程序
可以从IDLE中直接 file --》 new window,打开一个文本编辑器,没有命令提示符。
10:注释是#
11:字符串
a:如果字符串里有单引号的话,要用双引号或者是转义字符
b:repr函数就是用反斜引号,输出包含数字的句子时比较有用
c:3.0中已经不是用反引号了,直接使用repr函数
d:长字符串,如果字符串跨越多行,那么可以用三个单引号来表示
e:或者在每一行后面加上斜杠,表示换行符本身被转义了。
f:原始字符串
二 数据结构--列表
1:基本数据结构是序列,sequence
序列的索引从0开始,也可以从最后一个元素标记为-1,倒数第二个计数为-2
2:序列分为元组和列表,元组不能更改,是两者的主要区别
3:python的内建序列6种
a:列表
b:元组
c:字符串
d:Unicode字符串
e:buffer对象
f:xrange对象
4:关于序列的写法
可以看到序列的使用方式。
另外序列和映射(如字典),是两种主要的容器。
5:通用序列操作
a:索引indexing
b:分片slicing
c:加
d:乘
e:成员资格
f:计算长度,找出最大元素和最小元素等内建函数
6:索引
a:对于序列,可以正序从0开始计数,也可以从最后的元素-1开始计数,逆序的时候,第一个元素可以由index为0得到或者是通过序列长度
例如:
另外,还可以直接在字符串字面值后面加上索引,另外如果一个函数直接返回一个序列,那么可以直接对返回结果做 索引操作。例如:
7:分片
a:
索引用来访问单个元素,分片操作用来访问一定范围内的元素,分片通过冒号相隔的两个索引来实现。
可以看到分片里面,包含第一个索引,但是不包含最后一个索引号代表的元素。
可以看到,想要得到从某一个索引开始到最后所有的值,可以这么写,省略最后的索引。
b:设置更大的步长
可以看到,步长可以设置,另外当步长为副的时候,是从右到左提取元素,这时候第一个索引值一定要大于第二个索引值。完全是方向问题
c:两种相同类型的序列用加号链接
d:乘法,表示将序列重复n次
创建一个占10个元素空间的空列表
None是内建值,表示什么都没有
e:成员资格--in
可以看到,多个字符检查成员资格也可以。
f:长度,最大最小值
8:列表 ---mutable
a:list函数
根据字符串创建列表
注意的是,用join这种方式的时候,参数值必须是字符型的列表,数字是不行滴,也就是说,列表中的元素必须用单引号引起来的那种。
b:基本列表操作
1:改变列表,元素赋值 删除操作两种方式,可以通过赋值操作得到。
9:列表方法
python里面,函数是指内建的,例如上面的del函数,可以直接使用,但是方法是指特定对象特有的。列表提供了以下几个方法:
a:append,在列表尾部追加新对象
b:count,计数某个元素出现的次数
c:extend方法,直接在列表的尾部一次性追加另一个序列中的多个值。这个和加号的那个链接操作不一样,链接操作返回一个新的列表,原先的两个不变,而extend方法会改变被扩展列。
d:index找到某个值在列表中第一个匹配的索引位置,如果找不到会返回异常。
e:insert方法,插入值到列表中
f:pop方法,删除指定元素,并返回。默认情况下会删除最后一个。
------栈,可以用pop方法以及append方法实现,而队列可以用insert(0,。。)以及pop(0)实现
g:remove方法只是删除第一次出现的值
h:reverse方法,将列表中的元素逆序存放
i:sort方法需要注意点,会对列表做出改变,另外,想要先复制然后再做操作的时候,不能仅仅复制引用,要用切片的方式复制所有例如 y = x[ : ]。而sorted函数会返回sort好的列表,不该办原来的列表顺序。
j:想要根据元素的长度排序或者逆序排序
注意点,布尔值必须写作True,不能改变大小写
三 数据结构--元组
1:要创建元组,只要用逗号分隔了一些值,就自动创建了元组,通过括号括起来
只有一个值的元组,必须加上一个逗号
2:元组是用括号,而列表是用[]
3:tuple函数---和序列中的list函数类似,给定一个序列,转换成元组
基本操作和序列的一样
4:
四 数据结构--字符串
1:基本操作就和序列中的一样,但是字符串是不可变的,所以一些赋值操作不可用
2:字符串格式化,直接读精简版的,到时候具体用到再读3.4节详细的
字符串格式操作符:%,左侧放置格式化字符串,右侧放置想要格式化的值
3:常用方法
a:find方法可以在一个较长的字符串中查找子字符串,还可以指定起始点等
b:join方法,是split方法的逆方法,这个需要注意下,用来在队列中添加元素
c:lower方法--title方法
d:replace方法,所有项都要替换
e:split方法,join的逆方法,将字符串分割成序列
f:strip方法去除两端的空格,就像是Java中的trim方法
g:translate方法只处理单个字符,但是可以同时进行多个替换
五 数据结构--字典
1:创建字典,大括号,每一项用:分隔表示键值对
2:dict函数可以通过其它的字典或者键值对来产生新的字典,或者关键字参数
3:字典方法
a: clear方法,清空字典
b:copy,浅复制,深复制到话用deepcopy
c:get方法,这个比较好的地方就是,查询不到的话不会返回异常
d:has_key方法,判断是不是有给出的键
e:items,iteritems
f:pop
g:popitem随机弹出一个元素
h:update方法
i:values返回字典中的值,用列表的形式
六 条件,循环,和其它语句
1:print函数,打印多个参数,只要中间用逗号分隔就行了
2: ,一定要注意3.0以后,print必须加上括号了。
3:序列解包
4:
5:语句块,以 : 开始,缩进相同
6:运算符
a:相等运算符用 ==
b:is判断同一性而不是相等性,也就是是不是两个参数指向同一个对象
c:while循环
d:for循环,和Java的foreach循环很像
e:zip函数,挺有用的
7:列表推导式——利用其他列表创建新列表的方法,类似for循环
8:python中空代码块是违法的,所以要加上pass
9:python中无法删除值,
注意del删除的是名字本身
10:动态的创建代码字符串exec