Tags : Ajax  apache  awk  besttrace  bootstrap  CDN  Django  git 

常见问题

笔记:python基础

stevezhou      2014.08.25   


记录Python基础知识点,以便复习。

-----------------------------------------------------------

——类、模块、包

一个模块可以包含多个类,它将数据和操作进行封装,以便将来的复用;

脚本都是用扩展名为py的文本文件保存的,一个脚本可以单独运行,也可以导入另一个脚本中运行,当脚本被导入运行时,我们将其称为模块(module),模块是Python组织代码的基本形式;

包是一堆按目录组织的模块和子包,目录下的__init__.py文件存放了包的信息,可用import, import as , form import 等语句导入模块和包;

——is与==

Python对象的三要素:id、type、value, 其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值;

a is b:a对象是否就是b对象,通过id来判断;

a==b:判断a对象的值是否和b对象的值相等,通过value来判断;

——set、list、tuple、dict 特性

set:无序、不重复、可修改的元素集合,不可用索引查找,常用方法:add、pop、remove、clear;

list:有序、可重复、可修改,可用索引查找,常用方法:append、remover、insert、pop、reverse、sort、count;

tuple:有序、可重复、不可修改,可用索引查找,常用方法:count -返回某个元素在元组中的个数;

dict:无序的键/值对数据;

——os.listdir 可以获取某目录下的文件列表,返回一个List对象;

——read、readline、readlines

read:读取整个文件,返回一个字符串;

readline:返回指定的某行,默认为第一行;

readlines:读取整个文件,返回以行为元素的List;

——迭代器、生成器

正式说法:一个实现了__iter__方法的对象是可迭代的,一个实现了next方法的对象是迭代器;

生成器:一个包含yield关键字的函数。生成器由两部分组成:生成器的函数、生成器的迭代器。生成器的是用def语句定义的,包含yield部分,生成器的迭代器是这个函数返回的部分。两个实体经常被当作一个,合起来叫做生成器。<Python基础教程(第2版)>~P196

——文件是可按行进行迭代的对象;

——re中match、search、findall

match:从开始处与正则表达式进行匹配,成功返回matchobject对象(用group进行调用),否则返回None;

search:搜索所有与正则表达式匹配的项,成功匹配返回matchobject对象(用group进行调用),否则返回None;

findall:返回所有与正则表达式匹配的字符串,返回List对象;

——getattr

原型:def getattr(Object,name[,default])

getattr(Object,name)与Object.name功能相同,用getattr可以把name作为一个变量去处理,适合根据条件自动调用相应方法的场景。

——os.path.exists(文件路径):检查一个文件是否存在;

——r 原始字符串符号

re.sub(r'(http://[a-z0-9]+\.[a-z0-9-_]+\.[a-z]{2,3})',r'<a href="\1">\1</a>','Im boboy website is http://www.boboy.org')

ASCII 字符和正则表达式特殊字符间存在冲突,如特殊符号“\b”在ASCII 字符中代表退格键,但同时“\b”也是一个正则表达式的特殊符号,代表“匹配一个单词边界”。为了让RE 编译器把两个字符“\b”当成你想要表达的字符串,而不是一个退格键,你需要用另一个反斜线对它进行转义,即:“\\b”,采用原始字符串"r'\b'"也可以解决此问题。原始字符串,它经常被用于简化正则表达式的复杂程度,很多Python 程序员在定义正则表达式时都只使用原始字符串。

——python属于强类型语言,例如:1+'2' 就会报错;

——类的__name__为类名称,在需要自动根据条件调用类的场景很有用;

——闭包

以下是一段简短的闭包代码示例:

def foo():
    m=3
    n=5    
    def bar():
      a=4        
      return m+n+a   
    return bar
>>>bar =  foo()
>>>bar()
12

bar在foo函数的代码块中定义,称bar是foo的内部函数;在bar的局部作用域中可以直接访问foo局部作用域中定义的m、n变量;简单的说,这种内部函数可以使用外部函数变量的行为,就叫闭包

——装饰器

——在Python中,只有模块、类函数才会引入新的作用域,其它的代码块是不会引入新的作用域的

——Dict使用

>>> dt={'1':1,'2':2,'3':3}
>>> dt['4']

结果会报错:
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    dt['4']
KeyError: '4'

>>> dt.get('4')
>>>

dt[键] 的形式获取不存在的键值时会显示报错,用 dt.get (键) 不会显示报错,如果你不想因为KeyError而终止程序,就请用第二种吧!

——Dictitems方法:返回一个元素为元组的列表,其中每个元组元素对应字典中的键值对;

——IDLE中,连续三个引号的作用:标识多行文本,可将多行文本赋值给一个变量;

——条件表达式

python支持的条件表达式形式:[值/变量/表达式] if <条件表达式> else <值/变量/表达 式>, 如:

m=21
n=7
x=m if m>n else n

x的值为:21

y=m if m<n else n

y的值为:7

——获取系统默认编码

import sys
sys.getdefaultencoding() #全部用小写

——示例:自动处理编码

if isinstance(content,unicode): #content为要输出的内容
    print content.encode('utf-8')
else:
    print content.decode('gbk').encode('utf-8')

 



标签 :  python 上一篇     下一篇