python基础——函数编程

来源:互联网 发布:ec软件 编辑:程序博客网 时间:2024/05/16 11:53

python函数编程的优点

1、保持代码的可重用性(意思就是你不需要在不同的场合下写重复的代码)
2、保持代码的可拓展性(意思就是在哪个地方需要修改一下,你只需要修改函数里面的内容,而不需要修改每个使用到它的地方)
3、保持代码的一致性(意思就是函数某个地方改变了,其它用到它的地方都变了)

函数返回值

当没有返回值的时候就是一个过程,返回None
当返回值是一个具体的数时,返回的是一个object(对象)
当返回的值不止一个时,返回的是一个元组(tuple)

关键字参数和位置参数
关键字参数与形参顺序无关
位置参数与形参顺序一一对应

当关键字参数与顺序参数混合的时候,按位置参数的顺序来,所以不能将关键字放在顺序参数前面。举例说明如下:

def test(x,y):    print(x)    print(y)#test(x=2,1)#关键字参数不能放在位置参数前面test(2,y=1)
def test(x,y,z):    print(x)    print(y)    print(z)#test(1,y=2,z=3)#正确test(1,z=3,y=2)#正确#test(x=1,2,z=3)#报错,因为不知道中间的2到底是应该给谁

传递的参数不固定,使用参数组
可以通过以下这种方式:
*args:把N个位置参数转换成元组

def test(*args):    print(args)test(1,2,3,4,5)#当传递不固定的参数,使用这种方式可以把不固定的参数构成一个元组test(*[1,2,3,5,5])# *args=*[1,2,3,5,5],即args=[1,2,3,5,5]
def test(x,*args)    print(x)    print(*args)test(1,2,4,5,6,7,8)#第一个数始终是1,后面就都是args

**kwargs:把N个关键字参数转换成字典的方式

def test(**kwargs):    print(kwargs)#打印的字典方式    print(kwargs['name'])#以字典的形式进行打印    print(kwargs['age'])    print(kwargs['sex'])test(name="Jorocco",sex="man",age="23")test(**{'name':'Jorocco','age':'23'})#这种调用方式也可以

结果:
这里写图片描述

位置参数和参数组的结合

def test2(name,**kwargs):    print(name)    print(kwargs)test2('Jorocco',sex="man",age="23")

结果:
这里写图片描述

位置参数,默认参数,关键字参数的结合

def test3(name,**kwargs,age=19)#这种写法错误,参数组只能放在最后,不然的话判断不了参数组用哪几个参数
def test3(name,age=19,**kwargs):    print(name)    print(age)    print(kwargs)test3('Jorocco',sex='m',hobby='basketball')test('Jorocco',sex='m',hobby='basketball',age=23)#这种也行test('Jorocco',3,sex='m',hobby='basketball')#这种也行test('Jorocco',3,sex='m',hobby='basketball',age=23)#这种就不行

修改全局变量
全局变量的字符串和整数在函数里面需要显示声明(global)全局变量才能被被修改,列表、字典、集合、类则不需要

name1="Jorocco"#全局变量,在整个程序中都有效def change_name(name):    global name1#要修改全局变量需要先声明    print("before change",name)    name1="Morocco"    print("after change",name1)change_name(name1)print(name1)#全局变量被修改

这里写图片描述

修改全局变量的列表:

names=["Jorocco","Rain","Jack"]def change_name():    names[0]="Morocco"    print("inside fun",names)change_name()print("outside fun",names)

这里写图片描述

高阶函数
高阶函数就是把函数名当做实参传给函数且返回值中包含函数名

def add(x,y,f):    return f(x)+f(y)res=add(3,-6,abs)print(res)

匿名函数
匿名函数的作用:一般用在只需要调用一次就释放的只有三元运算的场景,当有for循环等逻辑运算的时候,匿名函数就不能实现。
举例说明:

cal=lambda x:x+2print(cal(3))

python的内存回收机制:
这里写图片描述
函数即“变量”,意思是函数名是变量,相当于门牌号,和x、y一样,都是变量,当我们定义一个变量或函数时,内存会开辟一个内存空间将具体的数字和函数体存入内存中,并将x、y或函数体名称作为该内存的门牌号,而对于匿名函数而言也是同样的,当门牌号没有了,该内存就会被回收,即1和函数体都被销毁。python的内存回收机制最关键的是:依门牌号而定,门牌号有则内存中的内容在,无,则内存被销毁回收。

原创粉丝点击