python速记

前置

python2、3不兼容。脚本的区别可以看print
建议先学习py3,但是py2也得会
解释语言、脚本语言。必会语言之一

以下速记以token-表达式-语句-块-函数-单元等编译原理为逻辑。
以下速记以c/c++ java为基础记不同。(编译型、编译-解释型、解释型)

基础语法

脚本头加

1
2
#!/usr/bin/python
#coding=utf-8

第一行linux直接执行脚本时决定使用什么解释器执行用的。
第二行指定文本的编码方式,解释器按这个编码读取。注释使用中文也要加
但是字串在py解释执行处理存储时不一定与脚本中编码一致,指定utf存储要在字串前加u

py的代码块是使用缩进区别的。同一代码块每条语句缩进必须一致。
py新行作为语句结束,可以使用\将语句分为多行:

1
2
3
4
5
6
total = item_one + \
item_two + \
item_three
语句中包含 [], {} 或 () 括号就不需要使用多行连接符。
days = ['Monday', 'Tuesday', 'Wednesday',
'Thursday', 'Friday']

引号’、”、’’’|”””都可,三个可以可跨行,且三引号中的字串不会转义

注释用#

缩进相同的一组语句构成一个代码块,我们称之代码组。
像if、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。
我们将首行及后面的代码组称为一个子句(clause)。

1
2
3
4
5
6
if expression :
suite
elif expression :
suite
else :
suite

变量、数据类型

变量不用声明,赋值时创建。

1
2
3
counter = 100 # 赋值整型变量
miles = 1000.0 # 浮点型
name = "John" # 字符串

可以使用del删除引用

数据类型:
数字、字串、列表、元组、字典

字串列表有俩种计数,0-n与-1-(-n-1),可以使用[ 头:尾]截取[)
可以使用字串*次数操作

列表使用:

1
2
3
4
5
list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]
print list # 输出完整列表
print list[0] # 输出列表的第一个元素
print list[1:3] # 输出第二个至第三个元素
del list[1] # 删除列表元素

元组-不可修改列表使用:

1
2
3
4
tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )
print tuple # 输出完整元组
print tuple[0] # 输出元组的第一个元素
print tuple[1:3] # 输出第二个至第四个(不包含)的元素

字典-键值使用:

1
2
3
4
5
6
7
8
9
10
dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"
tinydict = {'name': 'john','code':6734, 'dept': 'sales'}
print dict['one'] # 输出键为'one' 的值
print dict[2] # 输出键为 2 的值
print tinydict # 输出完整的字典
print tinydict.keys() # 输出所有键
print tinydict.values() # 输出所有值
del dict['Name'] # 删除条目

数据转化:
类型当函数用即可

1
int(x [,base])

表达式、语句

算数+-*/%
增加:
**幂
//返回商的整数部分-突出是整数除法
比较== != > < >= <= 注意仅判断值、不判断引用
增加:
<>不等于
赋值= += -= *= /= %= **= //=
位运算符& | ^ ~ << >>
逻辑 and or not (不是|| && !)
成员运算符 in not in 可作用于字串、列表、元组
身份运算符 is is not 判断俩个标识符是否引用同一对象

条件:不用(条件) 注意加:

1
2
3
4
5
6
if 判断条件:
执行语句
elif 判断条件:
执行语句
else:
执行语句

没有switch

循环

1
2
3
4
5
6
while 判断条件:
执行语句
for a in l:
a
for index in range(n):#range返回序列
index

break、continue直接用即可。
pass可以作为一个语句占位。

函数、单元

1
2
3
4
def functionname( parameters ):#参数仅写名字,不指定类型
"函数_文档字符串"
过程
return [expression]

py的传参不可变类型(字串、整数、元组)传的是值,可变类型(列表、字典)传的是引用

python模块是一个python文件

1
2
3
4
5
6
# 导入模块,写文件名即可
import support
# 导入一部分,这种导入后使用时不用加modename.xxx
from modname import name1[, name2[, ... nameN]]
support.print_func("1")

模块搜索路径:当前目录、PYTHONPATH、默认路径(一般为/usr/local/lib/python/)
目录分割使用.可以将目录作为包,但要加init

面向对象

类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class ClassName:
'类的帮助信息' #类文档字符串
class_suite #类体
举例:
class Employee:
'所有员工的基类'
empCount = 0
# 构造 elf 代表类的实例,self 在定义类的方法时是必须有的,调用时不必传入相应的参数。
def __init__(self, name, salary):
self.name = name
self.salary = salary
Employee.empCount += 1
def displayCount(self):
print "Total Employee %d" % Employee.empCount
def displayEmployee(self):
print "Name : ", self.name, ", Salary: ", self.salary

创建对象:

1
2
emp1 = Employee("Zara", 2000)
emp1.displayEmployee()

回收:
引用计数器和一个循环垃圾收集器

常用功能

字串格式化

字串 % (表达式)
字串中格式化符号与c一致

1
"My name is %s and weight is %d kg!" % ('Zara', 21)

ljust将原字串填充至指定长度

len() + *都可以用于列表

输入输出

1
2
3
#读一行
str = raw_input("请输入:")
print "你输入的内容是: ", str

调试python脚本
python -m pdb xxx.py
n、s单步。