一、python中的函数:
函数到底是什么呢:
函数就是执行特定任何以完成特定功能的一段代码
1.代码如下:
示例:
print("------------位置参数-----------------")
def calc(a,b):
c=a+b
return c
result=calc(10,20)
print(result)
print('-------------关键字参数-------------------------')
def calc1(a,b):
c=a+b
return c
result1=calc1(b=1,a=2)
print(result1)
print('--------参数传递--------------')
def fun1(arg1,arg2):
print('arg1',arg1)
print('arg2',arg2)
arg1=100
arg2.append(10)
print('arg1', arg1)
print('arg2', arg2)
return
n1=11
n2=[22,33,44]
print(n1)
print(n2)
print('------------------')
fun1(n1,n2)
print(n1)
print(n2)
print('-----------------函数的返回值----------------------------------')
def fun2(num):
odd=[]
even=[]
for i in num:
if i%2:
odd.append(i)
else:
even.append(i)
return odd,even
print(fun2([10,29,33,40,24,55,30,67]))
print('---------------默认值参数-------------------')
def fun3(a,b=10):
print(a,b)
return
fun3(100)
fun3(55,666)
print('------------个数可变的位置参数----------')
def fun4(*args):
print(args)
fun4(10)
fun4(10,20,30)
print('---------------个数可变的关键字参数----------------------------')
def fun5(**args):
print(args)
fun5(a=10)
fun5(a=10,b=20,c=30)
print('-------------函数递归-----------------------')
def digui(n):
if n==1:
return 1
else:
result2=n*digui(n-1)
return result2
print(digui(6))
2.运行结果:
示例:
------------位置参数-----------------
30
-------------关键字参数-------------------------
3
--------参数传递--------------
11
[22, 33, 44]
------------------
arg1 11
arg2 [22, 33, 44]
arg1 100
arg2 [22, 33, 44, 10]
11
[22, 33, 44, 10]
-----------------函数的返回值----------------------------------
([29, 33, 55, 67], [10, 40, 24, 30])
---------------默认值参数-------------------
100 10
55 666
------------个数可变的位置参数----------
(10,)
(10, 20, 30)
---------------个数可变的关键字参数----------------------------
{'a': 10}
{'a': 10, 'b': 20, 'c': 30}
-------------函数递归-----------------------
720
进程已结束,退出代码为 0
总结:
提示:这里对文章进行总结:
为毛使用函数:
复用代码
隐藏实现细节
提高可维护性
提高可读性便于调试
函数的创建和调用:
函数的创建:
def 函数名([输入参数]):
函数体
[return xxx]
def calc(a,b):
c=a+b
return c
函数的调用:
result=calc(10,20)
print(result)
函数的参数传递:
函数调用的参数传递:
位置实参:根据形参对应的位置进行实参传递
def cacl(a,b) cacl(10,20)
关键字实参:根据形参名称进行实参传递
def calc(a,b) cacl(b=1=,a=20)
形参:在函数的定义处
实参:在函数的调用处
形参名称与实参名称可以不一致
如果是不可变对象,在函数体的修改不会影响实参的值, arg1的修改为100,不会影响n1 的值
如果是可变对象,在函数体的修改会影响到实参的值, arg2 的修改,append(10)会影响到n2的值
函数的返回值:
函数返回多个值时,结果为元组
1.如果函数没有返回值(函数执行完毕后,不需要给调用处提供数据,return可以省略不写)
2.函数的返回值,如果是一个,直接返回原类型
3.函数的返回值,如果是多个,返回的结果为元组
函数的参数定义:
函数定义时,给形参设置默认值,只有与默认值不符的时候才需要传递实参
def fun(a,b=10):
print(a,b)
fun(100) 只传一个参数,b采用默认值10
fun(20,30) 30将替换默认值10
个数可变的位置参数:
定义函数时,可能无法事先确定传递的位置实参的个数时,使用可变的位置参数
使用*定义个数可变的位置参数
结果为一个元组
def fun(*args)
print(args)
fun(10)
fun(10,20,30)
个数可变的关键字参数:
定义函数时,无法事先确定传递的关键字实参的个数时,使用可变的关键字形参
使用**定义个数可变的关键字形参
结果为一个字典
def fun(**argss):
print(args)
fun(a=10)
fun(a=10,b=20,c=30)
递归函数:
什么是递归函数:
如果在一个函数的函数体内调用了该函数本身,这个函数就称为递归函数
递归的组成部分:
递归调用与递归终止条件
递归的调用过程:
每递归调用一次函数,都会在栈内存分配一个栈空间
每执行完一次函数,都会释放相应的空间
递归的优缺点:
缺点:占用内存多,效率低下
有点:思路和代码简单
|