函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。也可以自己创建函数,这被叫做用户自定义函数
函数的定义
1. 函数代码块以def关键词开头,后接函数标识符名称和圆括号()。
1. 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
1. 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
1. 函数内容以冒号起始,并且缩进。
1. Return[expression]结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
1. pass 表示什么都不做,主要用于占位。
Python 定义函数使用 def 关键字,一般格式如下:
def 函数名(参数列表):
函数体
例如,使用函数输出“Hello World”
>>> def hello():
... print("Hello World")
...
函数调用(执行)
执行Python 函数,直接执行函数名即可,如执行hello()函数
>>> hello()
Hello World
函数的参数
实参(argument)是指函数调用时传递进去的参数值(value),区别于形参(parameter)。
Python实参(argument)分为两类,关键字实参和位置实参(positional argument)。
- 默认参数
默认参数使得API简洁,但不失灵活性。当一个参数有默认值时,调用时如果不传递此参数时,会使用默认值。
>>> def inc(init, step=1):
... return init + step
...
这里的默认参是step=1,如在调用的时候,不写这个参数,就是默认等1;如下所示:
>>> inc(3)
4
>>> inc(3,4)
7
默认参数需要放在参数列表的最后面。
2)关键字参数
关键字实参就是在调用函数的时候,以name=value的形式传递参数,name就是参数定义的名字,也就是形参;关键字参数指明了参数名,所以可以不用管其调用时候顺序。
位置实参就是只传递value的形式,顾名思义,这要靠实参的位置来匹配形参,关键字参数必须位于位置参数之后
>>> def add(a,b):
... return a + b
...
>>> add(b=2,a=1)
3
- 不定长参数
有些时候并不知道要传的参是多少,在python中可以使用不定长参数传递一个元组(*args)或字典(**kwargs)
>>> range(2,5)
range(2, 5)
>>> r = (2,10)
>>> range(*r)
range(2, 10)
使用*r 代表一个元组传递参数进去
>>> def add(a,b):
... return a + b
...
>>> s = {"a":1,"b":2}
>>> add(**s)
3
使用**s(两个*)代表字典;
高阶函数
1) map
map() 会根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
map()函数语法:
map(function, iterable, ...)
function -- 函数,有两个参数 iterable -- 一个或多个序列
>>> def square(x):
... return x**2
...
>>> map(square,range(10))
<map object at 0x0000000002360940>
>>> a = map(square,range(10))
>>> for i in a:
... print(i)
...
0
1
4
9
16
25
36
49
64
81
- reduce
语法
reduce(function, iterable[, initializer])
将后面的序列给函数处理
>>> from functools import reduce
>>> def add(x,y):
... return x + y
...
>>> reduce(add,range(10))
45