函数

Posted LazyEveryday

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数相关的知识,希望对你有一定的参考价值。

什么是函数

函数就是执行特定任务以完成特定功能的一段代码


函数的作用

1.复用代码

2.隐藏实现细节

3.提高可维护性

4.提高可读性便于调试


函数的创建

     def       函数名(输入参数):

             函数体

             [return xxx]

print(------函数的创建-----)
def add(a,b): #实现加法
return a+b

def div(a,b): #实现除法
return a/b

print(add(10,20))
print(div(10,4))

函数_参数


函数的参数传递
1.位置实参

根据形参对应的位置进行实参传递

2.关键字实参

根据形参名称进行实参传递

print(-----函数参数的传递----)

def sub(a,b):
c = a - b
return c #实现减法

def mul(a,b):
return a * b #实现乘法

print(sub(10,20))
#位置实参,即10传给a,20穿给b
print(mul(b=10,a=20))
#关键字实参,按照输入的参数进行传递

函数_变量_02


函数的返回值
函数返回多个值时,结果为元组
print(----函数的返回值----)
def fun(num): #分出列表中的奇数偶数
odd=[]
even=[]
for i in num:
if i%2:
odd.append(i)
else:
even.append(i)
return odd,even

lst = [11,22,48,13,37,19]
print(fun(lst))

函数_函数_03


函数的参数定义
1.函数定义时,给形参设置默认值,只有与默认值不符的时候才需要传递参数
print(-----函数的参数-----)
#默认参数值
def add(a,b=50): #默认b为50
print(a,b)

add(100) #传给一个参数,给a
add(200,100) #100与50不同,赋值给b

函数_参数_04

2.个数可变的位置参数

定义函数时,可能无法率先确定传递的位置实参的个数时,使用可变的位置参数

使用*定义个数可变的位置形参(像c中的指针)

结果为一个元组

3.个数可变的关键字形参

定义函数时,可能无法率先确定传递的关键字实参的个数时,使用可变的关键字参数

使用**定义个数可变的位置形参

结果为一个字典

print(----个数可变的位置形参----)
def fun(*args): #只能有一个 个数可变的位置形参
print(args)

fun(10)
fun(20,30,40)

print(----个数可变的关键字形参-----)
def fun(**args): #同样只能有一个 个数可变的关键字形参
print(args)

fun(a = 10)
fun(b = 20, c = 30, d = 40)

函数_参数_05


变量的作用域
程序代码能访问该变量的区域
根据变量的有效范围分:

局部变量:在函数内定义并使用的变量,只在函数内部有效,局部变量使用global声明,这个变量会成为全局变量

全局变量:函数体外定义的变量,可作用于函数内外

print(---变量的作用域-----)
k = 30 #函数外定义,为全局变量
def fun():
a = 10 #函数内定义,局部变量
global b
b = 20
#函数内定义,但用global声明,为全局变量
print(a)
print(b)
print(k)
fun()
#print(a)
print(b)
print(k)

函数_变量_06


递归函数
1.什么是递归函数

如果一个函数的函数体内调用了函数本身,这个函数就称为递归函数

2.递归的组成部分

递归调用和递归终止条件

3.递归的调用过程

每递归调用一次函数,都会在栈内存分配一个和栈帧

每执行完一次函数,就会释放相应的空间

4.递归的优缺点

优点:思路和代码简单

缺点:占用内存多,效率低下

print(----递归函数----)
#n的阶乘
def fac(n):
if n==1:
return 1;
else:
return fac(n-1)*n
print(fac(4))


斐波那契数列
print(----斐波那契数列----)
def fib(n):
if n==1:
return 1
elif n==2:
return 1
else:
return fib(n-1)+fib(n-2)

print(fib(6))





以上是关于函数的主要内容,如果未能解决你的问题,请参考以下文章

UFT函数调用-根据两个数进行加法和减法运算

C函数使用加法和减法获取数组的所有总和

“时钟算术”/全等数学中的一个加法/减法函数?

Oracle 的加减法函数

Oracle 的加减法函数

excel减法出现value,啥问题 如何解决