【Python】04-Python函数与代码复⽤⽬录
1.函数的基本使⽤
(1)什么是函数
函数:完成特定功能的⼀个语句组,通过调⽤函数名来完成语句组的功能
为函数提供不同的参数,可以实现对不同数据的处理
函数可以反馈结果
(2) 函数分类
⾃定义函数:⽤户⾃⼰编写的
系统⾃带函数: Python内嵌的函数(如abs()、eval())、 Python标准库中的函数(如math库中的sqrt())等(3)使⽤函数⽬的
降低编程的难度
代码重⽤
(4)函数定义格式
函数定义中参数列表⾥⾯的参数是形式参数,简称为“形参”。
def add(x, y):
z = x + y
return z
注意事项:
函数形参不需要声明其类型,也不需要指定函数返回值类型
即使该函数不需要接收任何参数,也必须保留⼀对空的圆括号
括号后⾯的冒号必不可少
函数体相对于def关键字必须保持⼀定的空格缩进
与其它编程语⾔不同,Python允许返回0个、1个、多个值
>>> def count(x, y):
...    sum = x + y
...    sub = x - y
...    return sum, sub
...
>>> count(10, 3)
(13, 7)
>>> sum, sub = count(10,3)
>>> sum
13
>>> sub
7
>>>
Python允许嵌套定义函数。函数必须先定义,再调⽤。
def f1():
def f2():
print('from f2')
def f3():
print('from f3')
f3()
f2()
f1()
'''
执⾏结果
from f2
from f3
'''
(5)函数调⽤格式
[变量=]函数名([实参])
此时,参数列表中给出要传⼊函数内部的参数,这类参数称为实际参数,简称为“实参”。
函数⽰例:
最简单的实现⽅法是重复使⽤print()语句
改进版本:
def happy():
print("Happy birthday to you!")
def happyB(name):
happy()
happy()
print("Happy birthday, dear {}!".format(name))
happy()
happyB("Mike")
print()
happyB("Lily")
运⾏结果:
(6)函数调⽤的过程
程序调⽤⼀个函数需要执⾏以下四个步骤:
调⽤程序在调⽤处暂停执⾏
在调⽤时将实参复制给函数的形参
执⾏函数体语句
函数调⽤结束给出返回值,程序回到调⽤前的暂停处继续执⾏
(7)lambda表达式(匿名函数)
python新手代码及作用Python允许声明匿名函数(即没有函数名字的临时使⽤的⼩函数),这特别适合需要⼀个函数作为另⼀个函数参数的场合。
语法格式如下:
<;函数名> = lambda<;参数列表>:<;表达式>
lambda函数与正常函数⼀样,等价于下⾯形式:
def  <;函数名>(<;参数列表>):
return<;表达式>
说明: lambda表达式只可以包含⼀个表达式,该表达式的计算结果可以看作是函数的返回值,不允许包含其他复杂的语句,但在表达式中可以调⽤其他函数。
>>> g =lambda x,y:x+y
>>> type(g)
<class 'function'>
>>> g(3,4)
7
>>> g(99,12)
111
>>> g =lambda x,y=2,z=4:x+y+z
>>> g(1)
7
>>> g(y=40, z=60, x=80)
180
>>> L = [lambda x:x**2,lambda x:x**3,lambda x:x**4]
>>> print(L[0](2),L[1](2),L[2](2))
4 8 16
>>>
Lambda表达式在map()、filter()、reduce()函数中经常使⽤,简洁⾼效,稍后介绍。
2、函数的参数传递
(1)参数类型
函数的参数可以是以下⼏种类型:
位置参数
默认值参数
关键字参数
可变长参数
1)位置参数
⽐较常⽤的形式,调⽤函数时实参和形参的顺序必须严格⼀致,并且实参和形参的数量必须相同。
>>> def demo1(a,b,c):
...    print(a,b,c)
...
>>> demo1(3,4,5)
3 4 5
>>> demo1(3,5,4)  # 即使参数相同,当位置不同时,结果也不同
3 5 4
>>> demo1(3,5)  # 参数不⾜时报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: demo1() missing 1 required positional argument: 'c'
>>> demo1(3,5,4,1)  # 参数过多时也报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: demo1() takes 3 positional arguments but 4 were given
>>>
2)默认值参数(Default arguments)
调⽤带有默认值参数的函数时,可以不对默认值参数进⾏赋值,也可以赋值,具有较⼤的灵活性。
>>> def say(message, times=1):
...    print(message * times)
...
>>> say('hello')
hello
>>> say('good bye,', 3)
good bye,good bye,good bye,
>>> say('hi ', 6)
hi hi hi hi hi hi
默认值参数必须出现在函数参数列表的最右端,即任何⼀个默认值参数右边不能有⾮默认值参数;
>>> def f(a=3 ,b, c=5):
...    print(a,b,c)
...
File "<stdin>", line 1
SyntaxError: non-default argument follows default argument
>>> def f(a=3 ,b):
...    print(a,b)
...
File "<stdin>", line 1
SyntaxError: non-default argument follows default argument
>>> def f(a ,b=4, c=5):
...    print(a,b,c)
...
>>>
可以使⽤“函数名.__defaults__”查看所有默认参数的当前值。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。