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有条件在代码中触发异常
因为是搞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有条件在代码中触发异常
相关文章推荐
- python 学习笔记 元类 ORM
- python自定义输入名字并打印-学习笔记10-输入函数
- python-django开发学习笔记一
- Python学习笔记之映射类型字典(dict)
- webdriver(python)学习笔记四——定位一组元素
- python学习笔记
- python 学习笔记 二 序列, 列表, 元组, 字符串
- Python Requests 学习笔记
- Python学习笔记(二):条件控制语句与循环语句及常用函数的用法
- ASer Python学习笔记
- python 学习笔记 8 -- Python下调用Linux的Shell命令
- Python学习笔记1
- Python学习笔记之20140406
- python学习笔记(四)——数据字典
- Python|笨方法学Python学习笔记2
- python3.4学习笔记(九) Python GUI桌面应用开发工具选择
- 我的Python学习笔记(四):动态添加属性和方法
- Opencv Python版学习笔记(三)模板匹配
- python学习笔记6IO
- python学习笔记之(八)