Python的内置对象
Python支持基本的数学运算,值得一提的是乘方运算 **,例如2**100表示2的100次方。还有一些内置的数学模块可以使用,例如math和random。
[python] view plain copy
import math
print math.pi
print math.sqrt(96)
import random
print random.random()
print random.choice([1,2,3,4])
模块re支持字符串的模式匹配。例如:
import re
match = re.match(‘/(.*)/(.*)/(.*)‘, ‘/usr/home/bin‘)
print match.group(1)
print match.groups()
输出结果为:
[python] view plain copy
usr
(‘usr‘, ‘home‘, ‘bin‘)
Python支持复数类型、无穷精度整数类型、固定精度十进制类型。
在Python中,整数一般以C语言中的长整型表示(注意:不是Python中的长整型),当一个整数超过32位时会自动转换为长整型。复数在内部是通过一对浮点数来表示的。
Python表达式操作符
赋值语句建立对象引用值,变量名在首次赋值时会被创建,变量名在引用前必须先赋值。Python中赋值语句的形式如下表:
def中还可以使用lambda表达式。例如:
func(): x = action = (n: x**n) action f = func() f()
输出结果为:
[python] view plain copy
64
Python函数中,不可变参数(例如数字和字符串)是“通过值”进行传递的,可变对象(例如列表和字典)是通过“指针”进行传递的。例如:
func(,b): = b.append() x = y = [] func(x,y) x,y
结果为:
[python] view plain copy
0 [0, 1]
Python函数的返回值可以有多个变量,相当于返回的是一个元组,只是圆括号()被省略了。例如:
set(,): a = b = [,,] a,b x = y = [,,] x,y = set(x,y) x y
输出结果为:
[python] view plain copy
3.14
[1, 2, 3]
Python支持关键字参数,所有基于位置的参数将首先按照从左到右的顺序匹配头部的参数,之后再进行基于变量名的关键字匹配。
fun(a,b,c): a,b,c fun(,=,=) fun(=,=,=)
输出结果为:
[python] view plain copy
1 2 3
1 2 3
默认参数和关键字参数可以一起使用。
fun(a,b=,c=): a,b,c fun(,=)
输出结果为:
[python] view plain copy
1 2 4
Python还支持函数的任意参数。第一种方法是在元组中收集不匹配的任意参数。第二种方法是在字典中收集不匹配的关键字参数。
func(a, *, **kargs): a kargs func(,,,=,=)
输出结果为:
[python] view plain copy
1
(2, 3)
{‘y‘: 2, ‘x‘: 1}
在函数调用时也可以使用*语法,来分解参数的集合。
func(a,b,c,d): a,b,c,d func(*(,,,)) func(,*(,),**{:}) func(,=,*(,),**{:})
输出结果为:
[python] view plain copy
1 2 3 4
1 2 3 4
1 2 3 4
f = x,y,z : x+y+z f(,,) g = x,y=,z=: x+y+z g(,=,=)
结果:
6
10
L = [(x: x**), (x: x**), (x: x**)] L[](),L[](),L[]() D = {:(: +), :(: *), :(: **)} D[](),D[](),D[]()
结果:
4 8 16
5 6 8
lambda表达式可以嵌套使用,但是从可读性的角度来说,应尽量避免使用嵌套的lambda表达式。
inc(x): x+L = [,,,] (inc,L) ((x: x+),L)
结果:
[11, 12, 13, 14]
[11, 12, 13, 14]
[x**x ()] ((x: x**), ())
结果:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
[x+y x () x%== y () y%==]
结果:[1, 3, 5, 7, 9, 3, 5, 7, 9, 11, 5, 7, 9, 11, 13]
gensquares(N): i (N): i**i gensquares(): i,
结果:
0 1 4 9 16
saver(x=[]): x.append() x saver([]) saver() saver() saver()
结果:
[2, 1]
[1]
[1, 1]
[1, 1, 1]