您的位置:首页 > 编程语言 > Python开发

python核心编程(基础部分)-知识点串联

2013-10-31 17:08 169 查看
对前段时间看的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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python