对前段时间看的python核心编程进行知识点串联
一.Python基础
python的注释是#,两行代码间的连接符是\
python的通过代码块和代码组来组成结构,代码块是缩进相同的代码,代码组是跟在while,if,def,class符合语句:后的语句
不同的缩进深度区别不同的代码块,不同于C,C++等语言,不需要{}和;来实现代码的区分。
python的模块类似于java的package结构,通过import导入不同的模块,完成不同的功能。
import sys
sys模块是python最基础的模块,类似java下的System模块。python允许多重赋值如下
x,y,z=1,2,3
python的标示符特别在于内建类型,类似全局变量的存在,在python解释器在开始导入,可重载,替换。(内建(__buildin__))
特别要注意的是专用下划线标示符
_xxx 代表无法通过from module import *导入
__xxx__ 代表系统定义的名字,一般是内建类型
__xxx 代表类中的私用变量
编程风格一般缩进空格为4格
模块布局和实例程序
# -*- coding: utf-8 -*-
#可以输入中文了
'''这是一个测试模块'''
import sys#引入模块
import os#引入模块
debug = True#全局变量
class Fooclass(object):#基类是object,object就是__buildin__内建引入的全局变量
'''本类的功能是xxx'''
pass#注意什么都不写会报错,就算什么都不做,在python下也要写一个pass
def test():#后面是代码组
'''test the fuction'''
foo=Fooclass()#无需类型标识,自动识别,但是注意,这并不代表python下没有类型。
if debug:
print 'run_test()'
if __name__== '__main__':
#__name__是python的保留属性,代表模块的名字,如果是__main__代表从本模块启动程序,否则一般情况下为模块的名字
test()
python的内存管理机制:
1.变量无需事先声明
2.变量无需指定类型
3.无需关心内存管理
4.del可直接释放资源
Python的垃圾收集器是一个引用计数器和循环垃圾收集器,创建并赋值变量,引用+1,del变量,引用-1
相关工具:
调试实现:pdb
记录器:logging模块
IDE:Eclipse+pydev
二.python object
标准类型:和其他语言的区别,多出来了Complex number复数,List列表,Tuple元组,Dictionary字典。
所有python最基础的类型就是type类型,python和java一样,都是对象。
print type(object)
print type(type)
打印类型都是
<type 'type'>
<type 'type'>
type类型是其他类的元类,metaclass。
python的null值是None
python以栈帧的方式运行代码,保存上下文信息?python是C写的,应该就是写python是存储上下文的机制吧
python有一个特殊的语法,切片语法,多维sequence[start1:end1,start2:end2,...],步进sequence[start:end:step],类似如下
mylist=['123','456','789',['abc','def']]
print mylist[3:1:-1]
输出[['abc', 'def'], '789']
python不支持的类型char/byte:长度为1的字符串表示,或8位整型
python不支持指针
python整型相当于C长整型,浮点数为双精度浮点数
三.python 数字操作
需要注意的有两点,python的地板除,//舍去小数点
乘方符号**,
四.python序列
python下的字符串,列表和元组都是序列
字符串:
成员关系符(in,not in)
连接关系符(+)
重复操作符(*)
切片操作符([],[:],[::]),注意,切片操作符不会越界,怎么写都行。
字符串可直接索引
str1='abc'
str2='xyz'
str3=str1+str2 #连接符
str4=str1*3 #重复三个
str5=str5[1:3] #切片符
print str1 < str3 and str1=='abc'
print 'bc' in 'abcd'
格式化字符串
print '%d' % 10 #类似于C语言
字符串模板实现
from string import Template
s=Template('There are $(many) $(lang) Quotation Symbols'
print s.subsititue(many=3,lang='python')
unicode字符
u'huang'
说明,'''huang''
注意:python不以‘\0’结尾
列表list,可添加append,可修改,,可构建堆栈,队列
注意:列表可嵌套
元组tuple,不可修改,但可连接数据
深拷贝,与浅拷贝
=是浅拷贝,只拷贝引用,copy拷贝对象
五.映射集合
字典类型
创建,访问,更新,清除dict元素
集合类型
六.条件和循环
range()和xrange()
if,while,for,break,pass语句
迭代器iter()
列表解析
[expr for iter_ver in iterable]
[x*3 for x in range(3)]
七.文件输入输出
八.异常
try:
xxxx
except Exception,e:
xxxx
else:
xxxx(No exception)
finally:
xxxx
with语法
with open('/etc/paswd','r') as f
for eachline in f
#....
触发异常
raise exception
断言
assert 1==1
九.函数式编程
python支持内嵌函数
# -*- coding: utf-8 -*-
import sys
def function():
'''innerfunction'''
def inner_fuc():
print 'innerfunc'
print 'func'
inner_fuc()
function()
python支持装饰器
def deco(arg):
def _deco(func):
def __deco():
print("before %s called [%s]." % (func.__name__, arg))
func()
print(" after %s called [%s]." % (func.__name__, arg))
return __deco
return _deco
@deco("mymodule")
def myfunc():
print(" myfunc() called.")
@deco("module2")
def myfunc2():
print(" myfunc2() called.")
myfunc()
myfunc2()
# -*- coding:gbk -*-
'''示例6: 对参数数量不确定的函数进行装饰,
参数用(*args, **kwargs),自动适应变参和命名参数'''
def deco3(func):
def _deco(*args, **kwargs):
print("before %s called." % func.__name__)
ret = func(*args, **kwargs)
print(" after %s called. result: %s" % (func.__name__, ret))
return ret
return _deco
@deco
def myfunc4(a, b):
print(" myfunc(%s,%s) called." % (a, b))
return a+b
@deco
def myfunc5(a, b, c):
print(" myfunc2(%s,%s,%s) called." % (a, b, c))
return a+b+c
myfunc4(1, 2)
myfunc4(3, 4)
myfunc5(1, 2, 3)
myfunc5(3, 4, 5)
注意python支持可变长参数,*arg是元组,**vargs是字典
匿名函数lambda
lambda x,y=2:x+y
def add(x,y=2):
return x+y
闭包,封装函数
十.模块
十一.面向对象
对象,类,静态函数
元类
十二.执行环境
sys,os