第十三章 函数的定义与使用

---恢复内容开始---

函数的定义:函数是一段代码的表示

1、函数是一段具有特定功能的、可重用的语句组

2、函数是一种功能的抽象,一般函数表达特定功能

3、函数主要是有两个作用:降低编程难度和代码复用

 

函数的定义:

1 def <函数名>(<参数(0个或多个)>)
2   <函数体>
3   return <返回值>

计算n的阶乘的函数定义

1 def fact(n)  #函数名  参数
2     s=1
3     for i in range(1,n+1):
4              s*=i;
5     return s  #返回值

函数的定义:y=f(x)

1、函数定义时,所指定的参数是一种占位符

2、函数定义后,如果不经过调用,不会被执行

3、函数定义时,参数是输入、函数体是处理、结果是输出(IPO)

 

函数的调用:调用是运行函数代码的方式

1 def fact(n):
2     s=1
3     for i in range(1,n+1):
4         s*=i
5     return s
6 
7 #上述是函数的定义
8 
9 fact(10)    #函数调用,计算10的阶乘

有几点注意的地方:

1、调用时要给出实际参数

2、实际参数会替换定义中的参数

3、函数调用后会得到返回值

函数的调用过程如下图所示:

函数的参数传递;

参数个数:函数可以有参数也可以没有参数,但是必须保留括号

1 def <函数体>():
2 
3   <函数体>
4 
5   return <返回值>
1 def fact():
2     print("我也是函数哦")

可选参数传递

函数定义时可以为某些参数指定默认值,构成可选参数

1 def <函数名> (<非可选参数>,<可选参数>)
2             <函数体>
3             return <返回值>

可选参数传递实例:

1 def fact(n,m=1):
2     s=1
3     for i in range(1,n+1):
4         s*=i
5     return s//m

>>>fact(10)

3628800

>>>fact(10,5)

725760

可变参数传递:函数定义时可以涉及可变数量参数,即不确定参数总数量

1 def <函数名>(<参数>,*b):
2       <函数体>
3       return <返回值>

可变参数传递的实例:

def fact(n,*b):
    s=1
    for i in range(1,n+1):
        s*=i
    for item in b:
        s*=item
    return s

>>>fact(10,3)

10886400

>>>fact(10,3,5,8)

435456000

参数传递的两种方式:

函数调用时,参数可以按照位置或名称方式传递

1 def fact(n,m=1)
2     s=1
3     for i in range(1,n+1):
4         s*=i
5     return s//m

>>>fact(10,5)

725760

>>>fact(m=5,n=10)

725760

函数的返回值:函数可以返回0个或多个结果

1、return保留字用来传递返回值

2、函数可以有返回值,也可以没有,可以有return,也可以没有

3、return可以传递0个返回值,也可以传递任意多个返回值

1 def fact(n,m=1):
2     s=1
3     for i in range(1,n+1):
4         s*=i
5     return s//m,n,m

>>>fact(10,5)

(725760,10,5)#这是元组类型

>>>a,b,c=fact(10,5)

>>>print(a,b,c)

725760 10 5

下面我们来了解一下局部变量和全局变量的

1、局部变量是函数内部的占位符,与全局变量可重名但不同

2、函数运算结束后,局部变量被释放

3、可以使用global保留字在函数内部使用全局变量

4、局部变量位组合数据类型且未创建,等同于全局变量

 

lambda函数

lambda函数返回函数名作为结果

1、lambda函数是一种匿名函数,即没有名字的函数

2、使用lambda保留字定义,函数名是返回结果

3、lambda函数用于定义简单的、能够在一行内表示的函数

 

lambda函数

1 <函数名>=lambda <参数>:<表达式>
2 
3 
4 等价于
5 
6 
7 def  <函数名>(<参数>):
8         <函数体>
9         return <返回值>

lambda函数

>>>f=lambda x,y:x+y
>>>f(10,15)
25
>>>f=lambda:"lambda函数"
>>>print(f())
lambda函数

 

posted @ 2018-08-10 16:09  chy8  阅读(477)  评论(0编辑  收藏  举报