4.1 函数定义
4.1.1 基本语法
函数定义语法如下:
def 函数名([参数列表]):
'''注释'''
函数体
注意事项:
①函数形参不需要声明其类型,也不需要指定函数返回值类型
②即使该函数不需要接收任何参数,也必须保留一对空的圆括号
③括号后面的冒号必不可少
④函数体相对于def关键字必须保持一定的空格缩进
⑤Python允许嵌套定义函数
⑥在定义函数时,开头部分的注释并不是必需的,但是如果为函数的定义加上这段注释的话,可以为用户提供友好的提示和使用帮助。
⑦return语句用来从一个函数中返回一个值,同时结束函数。如果函数没有return语句,或者有return语句但是没有执行倒,或者只有return而没有返回值,Python将认为该函数以return None结束。
函数举例:
生成斐波那契数列的函数定义和调用
def fib(n):
a, b = 0, 1
while a < n:
print(a, end=' ')
a, b = b, a+b
print()
fib(1000)
4.2 形参与实参
函数定义时括弧内为形参,一个函数可以没有形参,但是括弧必须要有,表示该函数不接受参数。函数调用时向其传递实参,将实参的值或引用传递给形参。在定义函数时,对参数个数并没有限制,如果有多个形参,需要使用逗号进行分割。
例如:
编写函数,接受两个整数,并输出其中最大数。
def printMax(a, b):
if a>b:
pirnt(a, 'is the max')
else:
print(b, 'is the max')
对于绝大多数情况下,在函数内部直接修改形参的值不会影响实参。
例如:
>>> def addOne(a):
print(a)
a += 1
print(a)
>>> a = 3
>>> addOne(a)
3
4
>>> a
3
在有些情况下,可以通过特殊的方式在函数内部修改实参的值。
例如下面的代码:
>>> def modify(v): #修改列表元素值
v[0] = v[0]+1
>>> a = [2]
>>> modify(a)
>>> a
[3]
>>> def modify(v, item): #为列表增加元素
v.append(item)
>>> a = [2]
>>> modify(a,3)
>>> a
[2, 3]
4.3 lambda表达式
§lambda表达式可以用来声明匿名函数,也就是没有函数名字的临时使用的小函数,尤其适合需要一个函数作为另一个函数参数的场合。
§lambda表达式只可以包含一个表达式,该表达式的计算结果可以看作是函数的返回值,不允许包含其他复杂的语句,但在表达式中可以调用其他函数。
例如:
>>> f = lambda x,y,z:x+y+z #可以给lambda表达式起名字
>>> f(1,2,3) #像函数一样调用
6
>>> g = lambda x, y=2,z=3: x+y+z #参数默认值
>>> g(1)
6
>>> g(2, z=4, y=5) #关键参数
11
PS:
本篇主要参考董付国老师的《Python可以这样学》一书,这是一本不错的Python入门书籍,有兴趣的可以买本看看,当然,也可以持续关注我的博客,我会一直更新相关内容的。