《Python 简明教程》学习笔记
《python 简明教程》python 入门的一个非常好的文档。如需下载,请点击这里(密码:grjj)。最近又看了一遍,把里面一些容易忽略的知识点记录下来。
运算符
**
乘方,2**3=8//
取商的整数部分,10//3=3&
按位与,5&3=1|
按位或,5|3=7^
按位异或,5^3=6~
按位取反,~5=-6,取反后数的正负反转,且正数要比负数绝对值小 1and、or、not
就是 Java 里面的&&、||、!
,但是在 python 里面&&、||、!
是非法字符
数据结构
- python 里面常用的数据结构有列表(list)、元组(tuple)、字典(dic) 和集合 (set)
- list, 用方括号
[]
括起来,里面元素用逗号分隔,元素有序可变- 增加元素用
append()
方法,删除元素用del
方法
- 增加元素用
- tuple,用圆括号
()
括起来,里面元素用逗号分隔,元素有序不可变- 仅有一个元素时也要加
,
,避免与运算符优先级混淆 - 常用于打印语句,如
print "name:%s,age: %d" %(name,age)
- 仅有一个元素时也要加
- dic,用花括号
{}
括起来,里面元素用逗号分隔,元素无序可变,每个元素是用冒号:
分隔的键值对- 通过
dic[k]
访问元素,dic[newK]=newV
增加元素,del dic[k]
删除元素 - 遍历的方法为
for k,v in dic.items():
, 实际上dic.items()
会返回一个元组的列表 - 判断某一个 k 是否在 dic
if k in dic:
- 通过
- 序列,序列不是一种具体的数据结构,而是一类数据结构,字符串,列表和元组均属于序列,序列有一些通用的方法
- 通过
len()
获取序列的长度 - 表示序列的范围:
[a:b]
表示下表 a 到 b-1,[a:]
表示从下标 a 到最后一个,[:b]
表示从第一个 (也就是 0) 到下标 b-1,[:]
表示所有元素,默认步长为 1,也可以添加多一个参数变为[a:b:c]
, 这时步长为 c,与 range () 函数相似 - 对于一个序列,复制这个序列与给这个序列使用一个别名不同,详见下面代码
- 通过
1 | list1=[1,2,3] |
控制语句
- python 的控制语句有 if,while,for,continue,break,但是没有 switch
- if、while 判断条件的判断条件均没有括号
- while、for 语句均有一个 可选的 else 语句,while 语句条件不成立时退出 while 并执行 else 语句;for 语句中的 else 语句则在 for 循环后执行一次;但是如果在 while 和 for 循环里面遇到 break 退出程序,则不会执行 else 语句
for i in k:
语句里,k 可以是任何序列,包括字符串、列表、元组、字典等- for 里面常用的 range 函数的范围不包括第二个参数,默认步长为 1,可通过第三个参数选择步长
1 | range(1,5) --> 1,2,3,4 |
函数
- 函数没有 return 语句时默认返回一个 None(没有任何东西的特殊类)
- pass 语句表示一个空的语法句
- 文档字符串:用来描述函数或者类的功能,一般格式:首行以大写字母开始,句号结尾。第二行是空行,从第三行开始是详细的描述
1 | def printMax(x, y): |
其他一些用法
python 程序第一行的
#!
目的是确定使用哪个解释器,一般在 Linux 平台下写的是#!/usr/bin/env python
而不是直接写 python 解析器的位置,目的是即使程序在其他机子上跑时也能够找得到 python 解析器;而且程序迁移到 windows 下也不会报错问题,但是#!/usr/bin/env python
并不适用于 Windows 默认的 cmd 窗口,假如直接在 dos/powershell 下输入 python 的文件名,是会用文件关联的程序打开(关联程序可以通过右键设置打开方式来设定)。也可在 Windows 下安装一个git shell
,在git shell
下输入 python 的文件名即可执行。可以通过内置的 help ( ) 函数来找到函数和类的帮助信息,实际上 help ( ) 是通过抽取文档字符串(DocStrings,也就是函数和类的
__doc__
属性)并打印输出的字符串或者程序在一行放不下时通过反斜杠 \ 可以在下一行继续写,
字符串前加上
u
或者U
表示采用 Unicode 编码,字符串的连接可以使用加号 +print 语句的一些技巧:在 for 循环的 print 最后加逗号可以避免分行;print str*i 可以重复输出 i 个 str
强制类型转换一般形式是被转换的内容用圆括号括起来,类型不用扩。如
str(5)
是从整数转为字符串 ,int(raw_input('input an integer'))
是从字符串转为整形列表综合:从一个已有的列表导出一个新的列表。实例如下:
1 | list1=[1,2,3,4,5] |
- 函数形参为元组和字典:可用 * 和 ** 加在形参前,代表这是元组和字典,但是不加也能够正常使用。加上的目的是为了能让函数接受不定参数,例子如下:
1 | def add(x, *args): |
这里的 *args
表示参数数目不定,可以看成一个元组,把第一个参数后面的参数当作元组中的元素。运行1
2
3
4>>>print add(1, 2, 3, 4)
10
>>>print add(1, 2)
3
这样定义的函数不能使用关键词传入参数,要使用关键词,可以这样:1
2
3
4
5
6def add(x, **kwargs):
total = x
for arg, value in kwargs.items():
print "adding ", arg
total += value
return total
这里的 **kwargs
表示参数数目不定,相当于一个字典,关键词和值对应于键值对。运行如下1
2
3
4
5>>>print add(10, y=11, z=12, w=13)
adding y
adding z
adding w
46