3年前用过Python,现在忘的差不多了,现在项目又用到它了,重新拾起来,记录笔记以方便以后的重拾。
1. Python脚本
脚本提示符:
#! /usr/bin/env python
2. 语言基础
2.1 Numbers
i. Python的整数相除是向上取整
>>> 7/3
2
>>> 7/-3
-3
ii. 复数用(real+imagj),或complex(real, imag)创建
2.2 Strings
i. 单引号(')和双引号(")均可表示字符串
ii. 多行可以用三个引号(""")标识开始和结束
iii. 常量字符串前加r表示raw字符串,内容将不会转义
>>> rawstring = r'raw string \n \t \r keeps'
>>> print rawstring
raw string \n \t \r keeps
iv. 字符串可以用加号(+)连接(常量字符串之间可以省略),且可以重复(*)
>>> repeat = 'I' ' Love' * 3 + ' Python'
>>> print repeat
I LoveI LoveI Love Python
v. 字符串切割(slice)
字符串可以被任意切割,如果范围不正确或超过范围返回空字符串,但下标访问超过范围会抛异常
>>> helloworld = 'hello world'
>>>
>>> helloworld[5:]
' world'
>>> helloworld[6]
'w'
>>>
>>> helloworld[6:]
'world'
>>> helloworld[3:5]
'lo'
>>> helloworld[-1]
'd'
>>> helloworld[-2:3]
''
>>> helloworld[:-6]
'hello'
>>> helloworld[-0]
'h'
>>> helloworld[30:]
''
>>> helloworld[1:100]
'ello world'
>>> helloworld[6:2]
''
>>> helloworld[30]
Traceback (most recent call last):
File "<pyshell#77>", line 1, in <module>
helloworld[30]
IndexError: string index out of range
2.3 Lists
i. Python的List的元素可以不为不同类型
>>> lista = ['egg', 'hurt', 2, 3.14]
>>> lista
['egg', 'hurt', 2, 3.14]
ii. List可以像字符串一样随意切割,重复,下标访问
>>> lista[0:2] + ['very'] * 2
['egg', 'hurt', 'very', 'very']
>>> lista[3]
3.14
iii. List的替换、插入、赋值、清空
>>> lista
['egg', 'hurt', 2, 3.14]
>>>
>>> lista[0:2]=['foo', 1.72] # replacement
>>> lista
['foo', 1.72, 2, 3.14]
>>> lista[0] = [] #add list as an element
>>> lista
[[], 1.72, 2, 3.14]
>>> lista[0:1] = [] #clear elements between 0 and 1
>>> lista
[1.72, 2, 3.14]
>>> lista[1:1] = ['sec', 'third'] #insert two elements at index 1
>>> lista
[1.72, 'sec', 'third', 2, 3.14]
>>> lista[:0] = lista #make a copy of itself
>>> lista
[1.72, 'sec', 'third', 2, 3.14, 1.72, 'sec', 'third', 2, 3.14]
>>> lista[:] = [] #clear
>>> lista
[]
>>> len(lista)
0
2.4 控制流
i. if...elif..else
>>> def whatx(x) :
if x > 0 :
print 'positive'
elif x == 0 :
print 'zero'
else :
print 'negative'
>>> whatx(-3)
negative
ii. for...in
>>> for i in [1, 2, 3, 4, 5] :
print i,
1 2 3 4 5
和其他语言一样在循环的时候添加删除元素是不安全的,Python可以隐式的拷贝一个List
>>> odds = [1, 3, 4, 7]
>>> for i in odds[:] : #make a slice copy of entire list
if (0 == i % 2) :
odds.remove(i)
>>> odds
[1, 3, 7]
iii. Range,可指定起始,步长
>>> range(5)
[0, 1, 2, 3, 4]
>>> range(2, 10)
[2, 3, 4, 5, 6, 7, 8, 9]
>>> range(3, 15, 3)
[3, 6, 9, 12]
>>> range(-5, -30, -5)
[-5, -10, -15, -20, -25]
iv. Pass占位符
Pass什么都不做,只是让语法通过,
>>> class Non :
pass # minimal class for indicate a status
>>> def foo() :
pass # remember implement this
>>>
v. 赋值
Python可以一次给多个变量赋值
>>> x, y, z = 1, 5, 7
>>> x
1
>>> y
5
>>> z
7
vi. == 和is
==相当于equals,而is确定是否是同一对象。