- 使用命令
python
进行python的交互模式。交互模式下可以直接输入python代码运行。退出交互模式使用exit()
命令。
- 使用
python xxx.py
来运行文本编辑器里的python代码。
- 在mac和linux下,在.py结尾的python文件第一行加上
#!/usr/bin/env python
,可以使.py文件成为可执行文件,运行chmod a+x hello.py
加上可执行权限,就可以运行文件代码了,比如./xxx.py
。
>>> print 'The quick brown fox', 'jumps over', 'the lazy dog'
The quick brown fox jumps over the lazy dog
- raw_input(),可以让用户输入字符串。
- None代表无意义的值。
>>> ord('A')
65
>>> chr(65)
'A'
- Python在后来添加了对Unicode的支持,以Unicode表示的字符串用u’…’表示。
>>> print u'中文'
中文
>>> u'中'
u'\u4e2d'
# -*- coding: utf-8 -*-
按UTF-8编码读取。
>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'
- list的索引为-1的元素就是list的最后一个元素。
- list的索引为
-列表长度
的元素就是第一个元素。
- tuple为不可变列表,使用()来表示,比如
(1,2,3)
,只有一个元素的tuple:(1,)
[]
为可变列表。
if <条件判断1>:
<执行1>
elif <条件判断2>:
<执行2>
elif <条件判断3>:
<执行3>
else:
<执行4>
- 循环使用:
for x in ...
和while
。
- raw_input()读取的内容永远以字符串的形式返回。
{key:value,key1:value1,key2:value2}
,判断dict里是否存在key的键:key in dict
。
s = set([1, 2, 3])
,add和remove方法。
- set是可以进行交集和并集计算的,比如
s1 & s2
,s1 | s2
,s1 - s2
。
- 不可变对象自身不会变,一般都是新建一个对象返回。
- 定义一个什么都不做的函数:
def nop():pass
def my_abs(x):
if not isinstance(x, (int, float)):
raise TypeError('bad operand type')
if x >= 0:
return x
else:
return -x
- Python的函数返回多值其实就是返回一个tuple
- Python的函数具有非常灵活的参数形态,既可以实现简单的调用,又可以传入非常复杂的参数。
- 默认参数一定要用不可变对象,如果是可变对象,运行会有逻辑错误!
- 要注意定义可变参数和关键字参数的语法:
*args是可变参数,args接收的是一个tuple;
,**kw是关键字参数,kw接收的是一个dict。
- 可变参数既可以直接传入:func(1, 2, 3),又可以先组装list或tuple,再通过args传入:func((1, 2, 3));
- 关键字参数既可以直接传入:func(a=1, b=2),又可以先组装dict,再通过kw传入:func({‘a’: 1, ‘b’: 2})。
- 使用*args和**kw是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。
- 列表和tuple的切片[::]语法。
- 判断是否可迭代:
>>> from collections import Iterable
>>> isinstance('abc', Iterable)
True
>>> isinstance([1,2,3], Iterable)
True
>>> isinstance(123, Iterable)
False
>>> [m + n for m in 'ABC' for n in 'XYZ']
['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']
>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]
- 要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator。next()方法。
- 将函数变为
generator
使用yield
关键字。
- 变量可以指向函数。
- 既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。
map()
函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
reduce
把一个函数作用在一个序列[x1, x2, x3…]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算。
- 关键字lambda表示匿名函数,冒号前面的x表示函数参数。
- 简单总结
functools.partial
的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。
- 如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线,在Python中,实例的变量名如果以开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问。