1、注意设置编码,防止中文出错:#coding=utf-8
输出:print ”hellO"
格式化输出:
print "%s %s test" %("s1" ,"s2")
2、标识符:区分大小写,字符、数字、下划线,数字不能开头,下划线在类中有特殊含义:
_foo:不能直接访问类的属性,__foo:类的私有属性,__foo__:特殊方法专用标识。
新型运算符: /整除 //浮点数整除 20.9//7=2 ** 乘方运算 2**3=8
字符串运算:连接运算 + 重复运算 * 索引[]
Ture 数值运算是为1 False数值运算为0
3、缩进:采用缩进和空行代替{}表示代码块,缩进要对齐,否则出现“indent”错误。
4、多行显示:\分割
total = item_one + \
item_two + \
item_three
语句中包含 [], {} 或 () 括号就不需要使用多行连接符:
days = ['Monday', 'Tuesday', 'Wednesday',
'Thursday', 'Friday']
多行代码:用;分割
print 'hello';print 'runoob';
5、字符串:单引号、双引号表示字符串,三引号(''',""" """)可表示多行字符串,或多行注释。
6、注释:#表示一行注释,三引号(''',""" """)可表示多行注释。
文档注释:模块、类、函数起始的字符串
7、用户输入 raw_input(); raw_input("input some")输出:(1)import sys; x = 'runoob'; sys.stdout.write(x + '\n')(2)print x;#换行输出,print x,y;#不换行输出。
8、命令行参数(后续详解):import sys ; print sys.argv
9、变量不需要声明,变量在内存中赋值时,才会根据类型分配内存空间。
python支持以下赋值方式:
a=1 #整数
b=1.0 #浮点数
c="string" #字符串
a=b=c=1 #等价于a=1;b=1;c=1;#其他语言报错
a,b,c=1,1.0,"string" #等价于a=1;b=1.0;c="string"
变量类型:
(1)数字:
int,long(12123L,0xABC),flaot(1.0),complex-复数(1+2j,complex(1,2))
(2)字符串:
s=“string" s='string'
字符串->字符串列表:
字串列表有2种取值顺序:
>>从左到右索引默认0开始的,最大范围是字符串长度少1.
>>从右到左索引默认-1开始的,最大范围是字符串开头.
eg:s[0]---'i'
取子字符串:变量[头下标:尾下标] #注意取不到下标,返回的是新对象
eg:s[1:3]---'tr'
字符串连接:+
s+"test"---stringtest
重复操作: *
eg: print s*3 #stringstringstring
(3)列表:采用[]表示,有序集合,支持字符,数字,字符串甚至可以包含列表(即嵌套)。
分割:变量[头下标:尾下标]
>>从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。
>>加号 + 是列表连接运算符,星号 * 是重复操作。
(4)元组:采用()表示,是“只读的list”
错误:tuble[1]="w"
!TypeError: 'tuple' object does not support item assignment
(5)字典:采用{}表示,无序的对象集合,不通过偏移只能通过键值取值。
{K,V}格式:
tinydict = {'name': 'john','code':6734, 'dept': 'sales'}
print tinydict # 输出完整的字典
print tinydict.keys() # 输出所有键
print tinydict.values() # 输出所有值
10、数据类型转换
数值转换:int() flaot() complex()
对象转字符串:str()
+序列转元组列表:list() tuple()
整数转字符:chr() unichr()
字符转整数:ord()
+字符串转数值表达式: eval()
查看数据类型:type() isinstance()
11、运算符
算术运算符:/除 //整除 % 取余 **幂运算符
比较运算符:== <> !=
赋值运算符: += %=
位运算符:&
+逻辑运算符:and or not
+成员运算符:测试是否属于序列、元组、字符串的成员
in not in #a in list ;a not in list
+身份运算符:判断标识符是否引用同一个对象(内存)is is not
+注意==是比较对象是否相等,is是判断标识符是否指向同一对象,注意区别。类似Java equal(),部分int类型分配同一内存。\
尽量不要使用is == 相互歧义的代码,这一块代码容易出错。
优先级:()
12、条件语句:
if condition:
...
elif condition:
...
else:
...
eg:
a="hello"
b="hello world!"
c=b[0:5]
if a==c:
print 'a==c' #run
if a is not c:
print "a==c but a is not c" #run
else:
print"a is c" #skip
13、循环语句:只存在while for 循环,continue 、break、pass
(1)while condition:
...
(2)while condition:
... #condition ==ture ,at least run one time
else:
... #only run once time
(3)for var in seq: #seq -> (string、list、touple)
...
eg:
for c in "hello"
print c
for i in range(1,10,2): #range;返回一个数的序列,注意左边为上限,取不到。
print i
(4) pass 空语句 相当于C中的nop()
14、number:
类型转换函数:int() flaot() complex() ord() eval()
数学函数:sqrt() abs() floor() cmp(x,y)
随机函数:random() #0-1随机数;
uniform(x,y) #随机生成x-y之间的实数
choice() #从序列中随机抽取一个数
shuffle() #将序列重新排序
三角函数:
sin() cos() acos()
常量:pi e
15、字符串
python中无单字符号,全为字符串。
转义字符:\n \r \' \" \000
字符串操作:链接+ 重复 * 索引:[] 成员:in not in 原始字符串:在字符串前 r或R r'\n' #转义字符不转义。
格式化字符串:%s %d %c
eg:print "%s %s" % ("hello","world!")
str.format()函数:使用{} :代替%
"{1}{0}".format("world”,"hello")
"{name}{phone}".format(name=“zhang3",phone="10087")
"{0.[0]}{0.[1]}".format(["hello","world"])
"{:.2f}".format(3.1415926) #保留小数点2位
内建函数:lower()转小写 replace() upper() encode()
对于汉字若采用unicode时,前面加u,eg :u”黄“
16、列表:
列表成员数据类型可以不同,采用索引读写。
更新:list[1]=1
删除:del list[1]
连接、重复:+ *
in 、for x in list
函数:len(list) max() min() list() cmp(list1,list2) \\list(seq)#转换函数
方法:list.append() .count() .index() .pop() .remove() .reverse() .sort()
列表解析简介:
range(2) ---[0,1]
a=[x **2 for x in range(3)]
17、列表:
一个成员的元组需要加“,”否则出错,语句歧义。touble=(1) touble=(1,)
元组不能修改,但允许del + *
内置函数:len() max() min() cmp() tuple()
18、字典:键值唯一
增加修改:dic["key"]=value
删除: del dic["key"]
函数:pop() len() type()
formkeys(k,v)
19、时间日期 import time
时间戳:time.time()
时间元组:time.localtime(time.time())
获取格式化时间:time.asctime(time.localtime(time.time()))
格式化日期:time.strftime(format[, t])
eg:# 格式化成2016-03-20 11:45:39形式
print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
# 将格式字符串转换为时间戳
a = "Sat Mar 28 22:24:24 2016"
print time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y"))
获取日历:import calendar
calendar.month(2017, 10)
函数: time.sleep() time.clock() time.ctime() calendar.calendar()
模块:datatime pytz datautil
20、函数:
格式定义:
def functionname(parameters):
"function description"
function statements
return [exp]
eg:
def printme( str ):
"打印传入的字符串到标准显示设备上"
print str
return
形参:数字、字符串、元组(值传递,不可变对象,每次赋值时都会指向创建一个新对象)
实参:字典、列表(可变对象,操作指向同一个地址)
批注:python 修改不可变对象,实际时创造一个新对象,并重新引用之。
参数:
必备参数:传入顺序和数量必须和声明一致:function(name,age)
关键字参数:允许顺序和声明不一致:function(age=18,name="zhang3")
缺省参数:没有参数时,默认值代替def function(name,age=10):
不定长参数:def function(name,*msg): #加了*的msg代表所有未命名的参数
匿名函数:lambda [arg1 [,arg2,.....argn]]:expression
eg: lambda arg1,arg2:arg1+arg2;
return: none
全局变量:函数外,global;内部变量:函数内。
21、文件操作:
hand=open(filename,mode)
close readlines()
22、错误和异常
try / except raise
23、类
class classname(fatherclass[es]):
"class..."
a=1...
def function(self).. #方法参数不能为空 一般第一个参数为self
__init__(self,a="null parameters"): #初始化/构造函数
...
self 自身的引用 相当于this
创建实例 a=classname()
type() 返回对象类型
24、模块
import sys
*python对象:身份、类型、值
身份:内存地址 id()
类型: type()
none对象
type:所有对象的继承、
内部类型:
代码对象:通过compile() 获得代码对象,执行exec()执行。
帧对象:
跟踪记录对象:异常时记录
切片对象:sequence[start:end:step]
省略对象:Ellipsis,
XRange对象
对象比较:是否指向同一对象:is is not
repr() `` 计算并返回字符串
*类型即是类
2.2版本以后,类型函数也是类,
即为类型工厂函数:
int() float() type() list() touple()