python核心编程

来源:互联网 发布:跟章泽天是校友 知乎 编辑:程序博客网 时间:2024/06/14 20:44

对前段时间看的python核心编程进行知识点串联

一.Python基础

python的注释是#,两行代码间的连接符是\

python的通过代码块和代码组来组成结构,代码块是缩进相同的代码,代码组是跟在while,if,def,class符合语句:后的语句

不同的缩进深度区别不同的代码块,不同于C,C++等语言,不需要{}和;来实现代码的区分。

python的模块类似于java的package结构,通过import导入不同的模块,完成不同的功能。

[python] view plain copy
  1. import sys  
sys模块是python最基础的模块,类似java下的System模块。

python允许多重赋值如下

[python] view plain copy
  1. x,y,z=1,2,3  
python的标示符特别在于内建类型,类似全局变量的存在,在python解释器在开始导入,可重载,替换。(内建(__buildin__))

特别要注意的是专用下划线标示符

_xxx        代表无法通过from module import *导入

__xxx__ 代表系统定义的名字,一般是内建类型

__xxx      代表类中的私用变量

编程风格一般缩进空格为4格

模块布局和实例程序

[python] view plain copy
  1. <pre name="code" class="python"># -*- coding: utf-8 -*-   
  2. #可以输入中文了  
  3. '''''这是一个测试模块'''  
  4. import sys#引入模块  
  5. import os#引入模块  
  6.   
  7. debug = True#全局变量  
  8.   
  9. class Fooclass(object):#基类是object,object就是__buildin__内建引入的全局变量  
  10.     '''''本类的功能是xxx'''  
  11.     pass#注意什么都不写会报错,就算什么都不做,在python下也要写一个pass  
  12.   
  13. def test():#后面是代码组  
  14.     '''''test the fuction'''  
  15.     foo=Fooclass()#无需类型标识,自动识别,但是注意,这并不代表python下没有类型。  
  16.       
  17.     if debug:  
  18.         print 'run_test()'  
  19.   
  20. if __name__== '__main__':  
  21.     #__name__是python的保留属性,代表模块的名字,如果是__main__代表从本模块启动程序,否则一般情况下为模块的名字  
  22.     test()</pre>  

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一样,都是对象。

[python] view plain copy
  1. print type(object)  
  2. 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],类似如下

[python] view plain copy
  1. mylist=['123','456','789',['abc','def']]  
  2. print mylist[3:1:-1]  
输出[['abc', 'def'], '789']

python不支持的类型char/byte:长度为1的字符串表示,或8位整型

python不支持指针

python整型相当于C长整型,浮点数为双精度浮点数

三.python 数字操作

需要注意的有两点,python的地板除,//舍去小数点

乘方符号**,

四.python序列

python下的字符串,列表和元组都是序列

字符串:

成员关系符(in,not in)

连接关系符(+)

重复操作符(*)

切片操作符([],[:],[::]),注意,切片操作符不会越界,怎么写都行。

字符串可直接索引

[python] view plain copy
  1. str1='abc'  
  2. str2='xyz'  
  3. str3=str1+str2 #连接符  
  4. str4=str1*3 #重复三个  
  5. str5=str5[1:3#切片符  
  6. print str1 < str3 and str1=='abc'  
  7. print 'bc' in 'abcd'  

格式化字符串

[python] view plain copy
  1. print '%d' % 10 #类似于C语言  

字符串模板实现

[python] view plain copy
  1. from string import Template  
  2. s=Template('There are $(many) $(lang) Quotation Symbols'  
  3. 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支持内嵌函数

[python] view plain copy
  1. # -*- coding: utf-8 -*-   
  2. import sys  
  3.   
  4. def function():  
  5.     '''''innerfunction'''  
  6.     def inner_fuc():  
  7.         print 'innerfunc'  
  8.     print 'func'  
  9.     inner_fuc()  
  10.   
  11. function()  

python支持装饰器

[python] view plain copy
  1. def deco(arg):  
  2.     def _deco(func):  
  3.         def __deco():  
  4.             print("before %s called [%s]." % (func.__name__, arg))  
  5.             func()  
  6.             print("  after %s called [%s]." % (func.__name__, arg))  
  7.         return __deco  
  8.     return _deco  
  9.   
  10. @deco("mymodule")  
  11. def myfunc():  
  12.     print(" myfunc() called.")  
  13.   
  14. @deco("module2")  
  15. def myfunc2():  
  16.     print(" myfunc2() called.")  
  17.    
  18. myfunc()  
  19. myfunc2()  

[python] view plain copy
  1. # -*- coding:gbk -*-  
  2. '''''示例6: 对参数数量不确定的函数进行装饰, 
  3. 参数用(*args, **kwargs),自动适应变参和命名参数'''  
  4.    
  5. def deco3(func):  
  6.     def _deco(*args, **kwargs):  
  7.         print("before %s called." % func.__name__)  
  8.         ret = func(*args, **kwargs)  
  9.         print("  after %s called. result: %s" % (func.__name__, ret))  
  10.         return ret  
  11.     return _deco  
  12.   
  13. @deco  
  14. def myfunc4(a, b):  
  15.     print(" myfunc(%s,%s) called." % (a, b))  
  16.     return a+b  
  17.   
  18. @deco  
  19. def myfunc5(a, b, c):  
  20.     print(" myfunc2(%s,%s,%s) called." % (a, b, c))  
  21.     return a+b+c  
  22.    
  23. myfunc4(12)  
  24. myfunc4(34)  
  25. myfunc5(123)  
  26. myfunc5(345)  

注意python支持可变长参数,*arg是元组,**vargs是字典

匿名函数lambda

[python] view plain copy
  1. lambda x,y=2:x+y  
  2.   
  3. def add(x,y=2):  
  4.   
  5.     return x+y  

闭包,封装函数

十.模块

十一.面向对象

对象,类,静态函数

元类

十二.执行环境

sys,os

0 0
原创粉丝点击