【Python】函数
2021/8/12 17:06:17
本文主要是介绍【Python】函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
简介
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性和代码的重复利用率。
内置函数
Python有很多内置函数可以供开发者直接使用。
也可以在交互式命令行通过help(函数名)查看函数的帮助信息。
Python内置函数
自定义函数
定义函数
自定义函数规则:
- 定义函数以 def 关键词开头,依次写函数名、括号、括号中的参数和冒号。
- 函数体的第一行语句应使用文档字符串存放函数说明。
- 通常用return结束函数并返回函数的返回值。
调用函数
调用Python的函数,需要根据函数定义,传入正确的参数。
def area(width, height): # 计算面积函数 return width * height width = int(input('宽:')) height = int(input('长:')) print('面积是:{0}'.format(area(width,height)))
参数
- 位置参数
位置参数须以正确的顺序传入函数,且调用时的数量和声明时一样
area(5,10)
- 关键字参数
关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict
关键字参数的表现形式:
1. 在参数前加两个*,可以传入任意不受限制的关键字参数 2. 命名关键字参数,限制传入关键字参数的名字,命名关键字参数需要一个特殊分隔符*
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')
- 默认参数
默认参数可以简化函数的调用,降低调用函数的难度
设置默认参数时需要注意以下几点:
1. 默认参数必须指向不可变对象 2. 默认参数必须放在必须参数后 3. 当存在多个默认参数时,如果某个参数非默认值,需要把参数名写上
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个。
可变参数有两种表现形式:
1. 定义位置参数,调用的时候,先组装成一个list或tuple 2. 定义可变参数,在参数前加一个*,调用时可以传任意个参数也可以在list或tuple前加*传入
def sumall1(numbers): sum = 0 for i in numbers: sum = sum + i*i return sum sumall1((1,3,5))
def sumall(*numbers): sum = 0 for i in numbers: sum = sum + i*i return sum list = [2,4,5] sumall(*list)
参数组合
Python中各种参数可以组合使用,但定义顺序必须是:位置参数、默认参数、可变参数、命名关键字参数和关键字参数。
建议不要同时使用太多的参数组合,否则函数接口的可理解性很差。
参数小结
默认参数一定要用不可变对象,如果是可变对象,程序运行时会有逻辑错误!
*args是可变参数,args接收的是一个tuple;
**kw是关键字参数,kw接收的是一个dict
命名的关键字参数是为了限制调用者可以传入的参数名,同时可以提供默认值。
定义命名的关键字参数在没有可变参数的情况下不要忘了写分隔符*,否则定义的将是位置参数。
匿名函数
Python也可通过lambda创建函数,不需要像def那样标准的形式去定义
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
语法格式如下:
lambda [arg1 [,arg2,.....argn]]:expression
for_x = lambda arg1,arg2: arg1*arg2 for_x(5,10)
递归函数
函数在内部调用自身本身
递归函数的优点是逻辑简单清晰,缺点是过深的调用会导致栈溢出。
每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。
这篇关于【Python】函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24Python编程入门指南
- 2024-12-24Python编程基础入门
- 2024-12-24Python编程基础:变量与数据类型
- 2024-12-23使用python部署一个usdt合约,部署自己的usdt稳定币
- 2024-12-20Python编程入门指南
- 2024-12-20Python编程基础与进阶
- 2024-12-19Python基础编程教程
- 2024-12-19python 文件的后缀名是什么 怎么运行一个python文件?-icode9专业技术文章分享
- 2024-12-19使用python 把docx转为pdf文件有哪些方法?-icode9专业技术文章分享
- 2024-12-19python怎么更换换pip的源镜像?-icode9专业技术文章分享