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

python学习笔记

2012-09-27 09:43 260 查看
Python学习笔记

因为是搞nlp的,而python作为脚本语言对处理语料等方面有着先天的优势,所以近期好好学习了下它,下面是一些我的笔记,比较粗略,主要为了以后好复习。

Sys.path环境变量

数字,字符串,列表,字典,元组,文件

自动跟踪类型,不声明代码

Lambda args: expression 生成匿名函数

拷贝对象

字符串格式化 'a%s parrot'%type

列表解析 [.. for .. in .. if ..]

内部暂时存储并重复使用短字符串

try/except/finally

raise 触发异常

不要用;和(),一行有多个语句则;

.. .. = .. ..

使用列表作为堆栈的数据结构:

L = [1,2,3,4]

While L:

front, L = L[0], L[1:]

Print(front,L)

重定向利用print中的file默认指向sys.stdout

文件迭代:for line in open(..).readlines():

List(..), tuple(..), dict(..)

zip().....make an iterator that aggregates elements from each of the iterator

dir(..)抓取对象内所有可用属性列表

不要期待进行在原处的修改的函数会返回结果

函数仅仅是对象,可以赋值给不同的变量名,并通过新的变量名进行调用

一个函数所有变量名都是与函数的命名空间相关联内部变量名都是本地化的除非声明为全局变量(global)

变量名解析:LEGB原则

本地作用域(L)之后是上一层结构中def或lambda本地作用域(E),之后是全局作用域(G),最后是内置作用域(B)并且在第一处能够找到这个变量名的地方停下来

不可变参数是“通过值”进行传递,可变对象时通过“指针”进行传递

lambda用来编写跳转表(jump table)也就是行为的列表或字典

L = [(lambda x: x**2),(lambda x: x**3),(lambda x: x**4)]

for f in L:

Print(f(2))

print(L[0](3))

lambda中表达式:(lambda x,y: x if x<y else y)

filter: x = filter((lambda x: x>0),range(-5,5))

for y in iter(x):

Print(y)

对返回迭代器的使用:for x in iter:

Print(x)

交互模式下命令空间是名为__main__的命名空间

模块搜索路径:程序主目录,pythonpath目录,标准链接库目录,任何.pth文件内容,上述四个组件合起来就成为sys.path

from 复制而来的变量名和其来源文件之间并没有联系,为实际修改另一个文件全局变量名,必须使用import

包导入:import dir1.dir2.mod

from dir1.dir2.mod import x

包导入语句的路径内每个目录内都必须有__init__.py这个文件

__name__当以顶层脚本执行这个文件时为__main__在导入模块时常以此来判断是否导入

运算符重载:class Number:

def __init__(self,start):

self.data = start

def __sub__(self,other):

return Number(self.data - other)

__getitem__拦截索引运算:

class indexer:

def __getitem__(self,index):

return index**2

测试:x = index()

x[2] #.......4

如果__str__不存在,会转向__repr__(反过来不会),相当于java的toString()方法

__init__用于初始化,__call__应用函数调用表达式运行

如下:class Prod:

def __init__(self,value):

self.value = value

def __call__(self,othe):

Return self.value*other

>>> x = Prod(2)

>>> x(3) #........调用__call__

6

__del__析构器,__class__ is the instance's class

__getattr__(), __setattr__(),__delattr__()

方法是对象:1, 无绑定类方法对象:无self

2, 绑定实例方法对象:self+函数对

先获取绑定而不用实际进行调用:

class Spam:

def doit(self,message):

print(message)

可以获取绑定方法而不用实际进行调用

Object1 = Spam()

x = object1.doit #获取绑定

x('hello world') #调用

异常基础:try/except, try/finally , raise手动触发异常,assert有条件在代码中触发异常
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: