1.Windows下的PIL库安装(64位)
- easy_install Pillow
2.Linux下后台运行python脚本,使用nohup命令
$ nohup python
-
u test.py > out.log
2
>&
1
&
3.隐藏python执行时的dos窗口,改后缀为.pyw
.py 和 .pyw 之间的“其它差别”全都是 python.exe 和 pythonw.exe 之间的差别。
跟 python.exe 比较起来,pythonw.exe 有以下的不同:
1)执行时不会弹出控制台窗口(也叫 DOS 窗口)
2)所有向原有的 stdout 和 stderr 的输出都无效
3)所有从原有的 stdin 的读取都只会得到 EOF
相关函数:
1.类型转换
birth = int(raw_input('birth: '))
float('12.34')
str(1.23)
>>> unicode(100)
u'100'
2.类型判断
isinstance(x, (int, float))
isinstance('abc', Iterable) # str是否可迭代
2.range(5)
生成的序列是从
0
开始小于
5
的整数
3.ord()和chr()函数,可以把字母和对应的数字相互转换:
>>> ord('A')
65
>>> chr(65)
'A'
4.
abs(-20)
5.cmp(1, 2)
6.
enumerate
函数可以把一个
list
变
成索引
元素对
>>> for i, value in enumerate(['A', 'B', 'C']):
... print i, value
...
0 A
1 B
2 C
7.字符串变小写
s.lower()
1.
if age >= 18:
print 'adult'
elif age >= 6:
print 'teenager'
else:
与shell不同,没有fi
2.始终坚持使用4个空格的缩进
3.1.23x10 就是 1.23e9
4.True 、 False 布尔值可以用 and 、 or 和 not 运算
5.通常用全部大写的变量名表示常
量:
PI = 3.14159265359
6.
字符编码
UTF8
编码把一个
Unicode
字
符根据不同的数字大小编码成
1-6
个字节,常用的英文字母被编码成
1
个字节,汉字通常是
3
个字节,只有很生僻的字符才会被编码成
4-6
个字节
在计算机内存中,统一使用
Unicode
编码,当需要保存到硬盘或者需要传输的时候,就转换为
UTF8
编码。
普通的字符串
'ABC'
在
Python
内部都是
ASCII
编码的
以
Unicode
表示的字符串用
u'...'
表示
由于
Python
源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定
保存为
UTF8
编码。当
Python
解释器读取源代码时,为了让它按
UTF8
编码读取,我们通常在文件开头写上这两
行:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
7.格式化输出
'Age: %s. Gender: %s' % (25, True)
'Age: 25. Gender: True'
8.list
追加:classmates.append('Adam')
插入:
classmates.insert(1, 'Jack')
删除
list
末尾:
classmates.pop()
删除指定位置:
classmates.pop(1)
替换:
classmates[1] = 'Sarah'
排序:a.sort()
9.tuple
只有
1
个元素的
tuple
定义时必须加一个逗号
,与括号区分
可变的
”tuple
t = ('a', 'b', ['A', 'B'])
10.dict
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
get
方法:
>>> d.get('Thomas')
>>> d.get('Thomas', -1)
-1
删除一个
key:
d.pop('Bob')
11.set
key
的集合,但不存储
value
>>> s = set([1, 1, 2, 2, 3, 3])
>>> s
set([1, 2, 3])
12.
str
是不变对象,而
list
是可变对象
>>> a = 'abc'
>>> a.replace('a', 'A')
'Abc'
>>> a
'abc'
13.函数
返回多个值 x, y = move(100, 100, 60, math.pi / 6) 实际返回tuple
默认参数:
def power(x, n=2):
默认参数为list,不能用L=[]
def add_end(L=None):
if L is None:
L = []
L.append('END')
return L
可变参数:带*号,接收的是个tuple
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
调用:
>>> nums = [1, 2, 3]
>>> calc(*nums)
14
关键字参数:
def person(name, age, **kw):
print 'name:', name, 'age:', age, 'other:', kw
>>> person('Bob', 35, city='Beijing')
name: Bob age: 35 other: {'city': 'Beijing'}
>>> kw = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, **kw)
默认参数和关键字参数,在传参时如果已经符合了对应的类型,就按形参的形式传入
如可变参数,如果传入list或tuple,>>>person(*aa)
如关键字参数,如果传入dict,>>>person(**per)
对于任意函数,都可以通过类似
func(*args, **kw)
的形式调用它,无论它的参数是如何定义的
使用
*args
和
**kw
是
Python
的习惯写法
15.切片
>>> L = range(100)
>>> L[:10]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
每两个取一个
>>> L[:10:2]
Python
没有针对字符串的
截取函数,只需要切片一个操作就可以完成
16.迭代
默认情况下,
dict
迭代的是
key
。如果要迭代
value
,可以用
for value in d.itervalues()
,如果要同时迭代
key
和
value
,可以用
for k, v in d.iteritems()
。
判断一个对象是可迭代:
>>> from collections import Iterable
>>> isinstance('abc', Iterable) # str是否可迭代
True
>>> isinstance([1,2,3], Iterable) # list是否可迭代
True
>>> isinstance(123, Iterable) # 整数是否可迭代
False
多个变量:
>>> for x, y in [(1, 1), (2, 4), (3, 9)]:
... print x, y
17.列表生成式
>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]
一行代码列出当前目录下的文件和目录
>>> import os # 导入os模块,模块的概念后面讲到
>>> [d for d in os.
listdir
('.')] # os.listdir可以列出文件和目录
带if else
>>> L = ['Hello', 'World', 18, 'Apple', None]
>>> [s.lower() if isinstance(s,str) else s for s in L]
可见,if为真之后的语句放前面,而且如果在循环前面,if必须有else
>>> [s.lower() if isinstance(s,str) for s in L]
SyntaxError: invalid syntax
18.生成器
将列表生成式的[]换为()
g = (x * x for x in range(10))
使用函数表示:
def fib(max):
n
, a, b = 0, 0, 1
while n < max:
yield b
a, b = b, a + b
n = n + 1
generator
的函数,在每次调用
next()
的时候执行,遇到
yield
语句返回,再次执行时从上次返
回的
yield
语句处继续执行。
如果有循环,在适当的条件结束
for
循环
没有循环,
return
语句或者执行到函数体最后一行语句,就是结束
generator
的指令
19.map reduce
def char2num(s):
return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]
def str2int(s):
return reduce(lambda x,y: x*10+y, map(char2num, s)) lambda匿名函数
20.filter
根据返回值是
True
还是
False
决定保留还是丢弃该元素
def is_odd(n):
return n % 2 == 1
filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15])
# 结果: [1, 5, 9, 15]
21.sorted
高阶函数
def reversed_cmp(x, y):
if x > y:
return -1
if x < y:
return 1
return 0
传入自定义的比较函数
reversed_cmp
,就可以实现倒序排序:
>>> sorted([36, 5, 12, 9, 21], reversed_cmp)