首先申明下,本文为笔者学习《Python学习手册》的笔记,并加入笔者自己的理解和归纳总结。
1. def语句
def 语句将创建一个函数对象并将其赋值给一个变量名。
def <name>(arg1, arg2, ... argN)
<statements>
return <value>
定义一个相乘的函数。
>>> def multiply(x, y):
return x * y
>>> multiply(3, 4)
12
>>> multiply("Hello", 3)
'HelloHelloHello'
2. 函数参数
参数和共享引用 不可变参数传递值,可变参数传递引用。
>>> def fun(a, b):
a = 11
b[0] = "welcome"
>>> x = 13
>>> y = ["hello", "world"]
>>> fun(x, y)
>>> x, y
(13, ['welcome', 'world'])
参数匹配 参数匹配有位置匹配和名称匹配。
>>> def fun(name, age):
print "%s is %d" % (name, age)
>>> fun("Mike", 18)
Mike is 18
>>> fun(name="Jack", age=20)
Jack is 20
混合匹配中位置匹配必须在从左往右,之后进行名称匹配。
>>> fun("Lily", age=20)
Lily is 20
>>> fun(name="LiLy", 20)
SyntaxError: non-keyword arg after keyword arg
默认参数 默认参数允许创建函数可选的参数,如果没有传入值的话,在函数运行时,使用默认值。
>>> def fun(name, age=18, addr="ShangHai"):
print "%s is %d at %s" % (name, age, addr)
>>> fun("Mike")
Mike is 18 at ShangHai
>>> fun("Jack", 20)
Jack is 20 at ShangHai
>>> fun("Lily", 22, "GuangZhou")
Lily is 22 at GuangZhou
>>> fun("Lily", addr="ShengZhen")
Lily is 18 at ShengZhen
参数匹配扩展 符号(*) 匹配一个元组,符号(**) 匹配一个字典。
>>> def fun(*args):
print args
>>> fun(1)
(1,)
>>> fun(1, 2, 3, 4)
(1, 2, 3, 4)
>>> def fun(**args):
print args
>>> fun(name="Mike", age=19)
{'age': 19, 'name': 'Mike'}
符号(*) 和符号(**) 也用来解包参数。
>>> def fun(a, b, c):
print a, b, c
>>> L = [1, 2, 3]
>>> fun(*L)
1 2 3
>>> def fun(name, age, addr):
print "%s is %d at %s" % (name, age, addr)
>>> D = {"name":"Mike", "age":18, "addr":"ShangHai"}
>>> fun(**D)
Mike is 18 at ShangHai
apply内置函数用来调用函数
>>> pargs = (1, 2)
>>> kpargs = {"a":3, "b":4}
>>> def fun(*pargs, **kpargs):
print pargs, kpargs
>>> apply(fun, pargs, kpargs)
(1, 2) {'a': 3, 'b': 4}
3. 函数间接调用
函数可以作为参数传递。
>>> def fun1():
def fun2():
print "fun2"
return fun2
>>> f = fun1()
>>> f()
fun2
4.函数属性
向函数添加自定义的属性。
>>> def fun():
print fun.param
>>> fun.param = 11
>>> fun()
11
5. 匿名函数lambda
lambda 的主体是一个表达式,返回表达式的值。
>>> f = (lambda a, b, c: a + b + c)
>>> f(1, 2, 3)
6
>>> f = lambda x: (lambda y: y ** x)
>>> X = f(2)
>>> X(3), X(4)
(9, 16)
>>> Y = f(3)
>>> Y(2), Y(3)
(8, 27)
6. 序列函数
6.1 range()函数
range() 返回一系列连续整数。
>>> range(5)
[0, 1, 2, 3, 4]
>>> range(2, 5)
[2, 3, 4]
>>> range(1, 10, 3)
[1, 4, 7]
range 常被用来for 循环中的序列。
>>> val = "Hello"
>>> for i in range(len(val)):
print i, val[i]
0 H
1 e
2 l
3 l
4 o
6.2 zip()函数
zip() 可以同时循环多个序列。
>>> L1 = ["name", "age", "addr"]
>>> L2 = ["Mike", 18, "ShangHai"]
>>> zip(L1, L2)
[('name', 'Mike'), ('age', 18), ('addr', 'ShangHai')]
如果两个序列的数量不同,取较短数量。
>>> L1 = ["name", "age"]
>>> L2 = ["Mike", 18, "ShangHai"]
>>> zip(L1, L2)
[('name', 'Mike'), ('age', 18)]
>>> L1 = ["name", "age", "addr"]
>>> L2 = ["Mike", 18]
>>> zip(L1, L2)
[('name', 'Mike'), ('age', 18)]
6.3 map()函数
map() 函数用于列表映射。
>>> def fun(a, b):
return a + b
>>> L1 = [1, 2, 3, 4]
>>> L2 = [4, 5, 6, 7]
>>> map(fun, L1, L2)
[5, 7, 9, 11]
map() 实现zip() 的功能
>>> L1 = ["name", "age", "addr"]
>>> L2 = ["Mike", 18, "ShangHai"]
>>> map(None, L1, L2)
[('name', 'Mike'), ('age', 18), ('addr', 'ShangHai')]
如果两个序列的数量不同,取较长数量,空缺以None替代。
>>> L1 = ["name", "age"]
>>> L2 = ["Mike", 18, "ShangHai"]
>>> map(None, L1, L2)
[('name', 'Mike'), ('age', 18), (None, 'ShangHai')]
>>> L1 = ["name", "age", "addr"]
>>> L2 = ["Mike", 18]
>>> map(None, L1, L2)
[('name', 'Mike'), ('age', 18), ('addr', None)]
6.4 enumerate()函数
enumerate() 函数取得元素偏移量和元素值。
>>> L1 = ["name", "age", "addr"]
>>> for item in enumerate(L1):
print item,
(0, 'name') (1, 'age') (2, 'addr')
6.5 iter()和next()函数
iter() 和next() 用来手动迭代,直到发生异常。
>>> L1 = ["name", "age", "addr"]
>>> L = iter(L1)
>>> next(L)
'name'
>>> next(L)
'age'
>>> next(L)
'addr'
>>> next(L)
Traceback (most recent call last):
File "<pyshell#189>", line 1, in <module>
next(L)
StopIteration
6.6 filter()和reduce()函数
filter() 函数用于过滤元素。
>>> L = [1, 2, 3, 4]
>>> filter((lambda x: x > 2), L)
[3, 4]
reduce() 函数用于对元素进行统一操作。
>>> L = [1, 2, 3, 4]
>>> reduce((lambda x, y: x + y), L)
10
6.7 其他函数
>>> L = [0, 1, 2, 3, 4, 5]
>>> sum(L)
15
>>> any(L)
True
>>> all(L)
False
>>> max(L)
5
>>> min(L)
0
相关文章 Python 数字类型 Python 布尔型 Python 字符串 Python 列表 Python 字典 Python 元组 Python 集合 Python 变量和作用域 Python 语句 Python 函数 Python 类
|