python基础——函数编程

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+2
print(cal(3))

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值