暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【Python】函数

程序猿的向往 2021-08-13
566

Hello 小伙伴们大家好!!!

我是猿初

渣渣程序猿,不忘初心,执着向往

今天和大家一起来聊聊Python中的函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性和代码的重复利用率。

Python函数分类

Function classification

内置函数

自定义函数

匿名函数

递归函数

内置函数

Python 解释器内置了很多函数和类型,您可以在任何时候使用它们。

也可以在交互式命令行通过help(函数名)查看函数的帮助信息。

官方文档

自定义函数

1
定义函数

自定义函数规则

01定义函数以 def 关键词开头,依次写函数名、括号、括号中的参数和冒号

02函数体的第一行语句应使用文档字符串存放函数说明

03通常用return结束函数并返回函数的返回值

2
调用函数

调用Python的函数,需要根据函数定义,传入正确的参数。

def area(width, height):    # 计算面积函数    return width * heightwidth = int(input('宽:'))height = int(input('长:'))print('面积是:{0}'.format(area(width,height)))
复制

3
参数

位置参数

位置参数须以正确的顺序传入函数,且调用时的数量和声明时一样

def area(width, height):    # 计算面积函数    return width * heightarea(5,10)
复制

关键字参数

关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个字典

表现形式

参数前加两个*,可以传入任意不受限制的关键字参数;当需要限制关键字参数的名字时,命名关键字参数需要一个特殊分隔符*

def persion(name,age,**others):    print('Name:',name,'age:',age,'other:',others)persion('Henry-chr',26,city = 'Beijing',source = 96)
复制

def persion1(name,age,*,city):    print('Name:',name,'age:',age,'city:',city)persion1('Henry-chr',26,city = 'Beijing')
复制

默认参数

默认参数可以简化函数的调用,降低调用函数的难度

注意事项

默认参数必须指向不可变对象;默认参数必须放在必须参数后;当存在多个默认参数时,如果某个参数非默认值,需要把参数名写上


def persion2(name,age,gender = 'M',city = 'Shanghai'):    name = name    age = age    gender = 'boy' if gender == 'M' else 'girl'    city = city    print('My name is {0}.\nI am {1} years old.\nI am {2}.\nI am from {3}.'.format(name,age,gender,city))persion2('Henry-chr',26,city = 'Beijing')
复制

可变参数

可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。

注意事项

定义位置参数,调用的时候,先组装成一个list或tuple;定义可变参数,在参数前加一个*,调用时可以传任意个参数也可以在list或tuple前加*传入;

def sumall1(numbers):    sum = 0    for i in numbers:        sum = sum + i*i    return sumsumall1((1,3,5))
复制

def sumall(*numbers):    sum = 0    for i in numbers:        sum = sum + i*i    return sumlist = [2,4,5]sumall(*list)
复制

参数小结

默认参数一定要用不可变对象,如果是可变对象,程序运行时会有逻辑错误!

*args是可变参数,args接收的是一个tuple;

**kw是关键字参数,kw接收的是一个dict

命名的关键字参数是为了限制调用者可以传入的参数名,同时可以提供默认值。


定义命名的关键字参数在没有可变参数的情况下不要忘了写分隔符*,否则定义的将是位置参数。


Python中各种参数可以组合使用,但定义顺序必须是:位置参数、默认参数、可变参数、命名关键字参数和关键字参数。


建议不要同时使用太多的参数组合,否则函数接口的可理解性很差。

4
匿名参数

Python也可通过lambda创建函数,不需要像def那样标准的形式去定义

lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。

lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。

for_x = lambda arg1,arg2: arg1*arg2for_x(5,10)
复制

5
递归函数

函数在内部调用自身本身

递归函数的优点是逻辑简单清晰,缺点是过深的调用会导致栈溢出。

每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。

end


文章转载自程序猿的向往,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论