学自
廖雪峰的官方网站
首选是网络应用,包括网站、后台服务等等;
其次是许多日常需要的小工具,包括系统管理需要的脚本任务等等;
另外就是把其他语言开发的程序再包装起来,方便使用。
1)运行速度慢
2)代码不能加密
可以用int(name)转为 int
输出 print name
浮点数 1.23x10^9 = 1.23e9
# -*- coding: utf-8 -*- #廖雪峰的官方网站编码篇
list:l=['name1','name2','name3'] list 元素可以不同,可以是另一个元素 l.append('name4'):在 list的最后加入 l.insert(1,'newname2'):把元素插入到指定的位置 l.pop([1]): 删除元素,默认末尾,(指定元素) l[1]='newname2': 替换元素,直接赋值 l.sort(): 排序
demo=('name1','name2')
但是tuple一旦初始化就不能修改,
只有1个元素的tuple定义时必须加一个逗号',': t=(1,)
if x>3: ... elif x>1: ... else: ...
for x in list:...
while true:
d={'name':'zansan','nianl':80}
key是不可变对象。
查找和插入的速度极快,不会随着key的增加而增加;
需要占用大量的内存,内存浪费多。
'name' in d: 判断 key是否存在
d.get('name'[,-1]): 如果 key不存在,则返回None/自设值
d.pop('name'):删除元素
2.10.set: 一组key的集合,但不存储value,key不能重复
s = set([1, 2, 3]) s.add(4): 添加元素 s.remove(4): 删除元素 s1&s2 / s1|s2:可做交集、并集等操作
可以返回多个值,返回的是一个tuple(元祖)
def x([n=1]): 设定默认参数 def x(*n): 可变参数(n当 tuple用),传列表时,x(*list) def x(name,age,**kw): 关键字参数(kw当 dict用),
传参时,x('zs',37,job='xx',city='xxx'),传dict,x(**dict)
参数可组合使用:顺序必须是:必选参数、默认参数、可变参数和关键字参数。
如果要迭代value,可以用for value in d.itervalues(),
如果要同时迭代key和value,可以用for k, v in d.iteritems()。
判断是否可迭代:
from collections import Iterable isinstance('abc', Iterable)
eg:
>>> [x * x for x in range(1, 11) if x % 2 == 0] >>>[m + n for m in 'ABC' for n in 'XYZ'] ['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
g = (x for x in range(10)): 列表生成式的[]改成()
一边循环一边计算的机制,称为生成器,节省大量的空间
g.next() 调用
在函数中使用 yield,创建生成器
def add(x, y, f): return f(x) + f(y)
map:2个参数,将第一个参数的函数作用于第二个参数list中的每个元素
>>> map(str, [1, 2, 3]), --['1', '2', '3']
reduce:与 map类似,但函数需接收2个参数
reduce(f, [x1, x2, x3, x4]) == f(f(f(x1, x2), x3), x4)
接收一个函数和一个序列
依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
def xx(x): if x < 30: return True else: return False print filter(xx, [1, 2, 340, 20, 11]) --[1, 2, 20, 11]
sorted(list[,f]) f(函数)
不用写return,返回值就是该表达式的结果。
lambda x: x * x
代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)
简单的写法, #
编写函数调用日志
def log(text): def decorator(func): def wrapper(*args, **kw): print '%s %s():' % (text, func.__name__) return func(*args, **kw) return wrapper return decorator @log('execute') #调用 def now(): print '2013-12-25'
functools.partial: 把一个函数的某些参数设置默认值,返回一个新的函数
int2 = functools.partial(int, base=2)
在文件夹中创建一个 __init__.py 文件,Python会把这个目录当成一个包
__init__.py可以是空文件,也可以有Python代码
if __name__=='__main__':
在命令行运行hello模块文件时,Python解释器把一个特殊变量__name__置为__main__,而如果在其他地方导入该hello模块时,if判断将失败
别名:
import cStringIO as StringIO:
优先导入cStringIO,如果不支持,可以降级使用StringIO
作用域:
类似__xxx__这样的变量是特殊变量,自己的变量一般不要用这种变量名;
_xxx和__xxx这样的函数或变量就是非公开的(private)不应该被直接引用,
可以通过 get()返回一个新的函数
__name变量改成了_Student__name
pip install PIL #使用 pip安装模块,pypi.python.org,
class Student(object): #类名通常是大写开头的单词,
(object)表示该类是从哪个类继承下来的
如果没有合适的继承类,就使用object类,这是所有类最终都会继承的类。
def __init__(self, name, score): #类中定义的函数只有一点不同,就是第一个参数永远是实例变量self
type(): type(123)返回type类型<type 'int'> isinstance(): isinstance(d, Dog)返回布尔, isinstance('a', (str, unicode))是否是某些类型中的一种
dir():获得一个对象的所有属性和方法,返回一个包含字符串的list dir('ABC') hasattr(): hasattr(obj, 'x') obj中有属性'x'吗 setattr(): setattr(obj, 'y', 19) # 设置一个属性'y' getattr(): getattr(obj, 'y') # 获取属性'y'