首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python基础之函数

函数概述

函数是Python中重要的组成部分。函数是一段实现某个功能的代码块,有自己的函数名,输入参数和返回值。其中,函数的参数和返回值都可以为空。

函数的定义

Python中函数的定义比较简单。我们使用def关键字能够轻松的定义一个函数。比如,我们定义一个函数,接收两个整数,返回这两个整数相加的和。

示例:求两个数的和。在这个案例中,add叫做函数的名称,a和b叫做函数的参数,a+b是函数的返回值。

return语句

return是Python内置的关键字,一般用在函数中,用来返回函数执行后的结果。不过,如果一个函数什么都不返回,return是可以省略的,此时函数默认返回None。return后面可以跟变量,表达式等,如果跟的是变量,则返回变量的值;如果跟的事表达式,则会将表达式进行计算,将得到的结果返回。另外,return的后面不仅可以跟一个变量或表达式,还可以跟多个,只需要用逗号隔开即可。当return后面跟多个变量或表达式的时候,表示该元组有多个返回值,多个返回值以一个元素的格式进行返回。

示例:函数没有return语句。

示例:函数return后面有多个返回值。

内部函数

内部函数指的是函数的内部,我们还可以定义函数。比如我们可以让让函数返回一个函数。

示例:内部函数的基本用法。

使用和修改全局变量

如果只是简单的使用全局变量,只需要在函数内部直接调用全局变量名即可。但是,如果要在函数内部对全局变量做修改,并希望修改后的值能够在全局生效,这个时候就需要使用global关键字,声明要使用全局变量,并让修改映射到全局变量。

示例:在函数内部使用并修改全局变量的值。

函数参数概述

函数的参数可以有多种形式,常见的有必填参数,可选参数,可变数量的参数,可变数量的命名参数。另外,函数有形参和实参的说法。形参指的是我们定义函数的时候,给这个函数定义的所需的参数;实参指的是我们调用函数的时候实际传递的值。比如函数“add(a,b) ”,这里的a和b是形参,我们调用的时候“add(11,22)”,这里的11和22就是实参。

必填参数

必填参数指的是当我们调用该函数时,必须要传递的参数。如果一个函数的参数没有默认值,也没有其他任何的修饰符,那么这个函数的参数就是必填参数。比如在咱们之前学习的add加法函数中,有两个参数a和b,这里的a和b都是必填参数,在调用的时候,如果不进行传递,会抛出异常。

示例:实现两个数相加的函数,a和b都是必填参数。

可选参数

可选参数也叫默认参数,即就是函数的参数携带有一个默认值,当调用的时候,可以传实参,也可以不传实参。如果传递了实参,则使用实参作为计算的值,如果没有传递实参,则使用默认值作为计算的值。

示例:使用可选参数。

可变参数

可变参数指的是函数的变量个数可以是0个,1个或者任意多个。可变参数一般使用“*args”表示,表示可以接收任意多个参数。args是一个可迭代对象,可以通过索引进行取值。本质上,args是一个元组类型。

示例:一个可以求任意多个整数之和的add函数。

可变命名参数

可变命名参数和可变参数一样,支持任意多个参数。不过,和可变参数不同的是,可变命名参数是一个字典,要求传递的时候,要使用“key=value”的方式进行传递。可变命名参数一般是使用“**kwargs”进行定义。

示例:可变命名参数实现加法。

多种类型参数

函数的参数有多种类型,多种类型的参数可以同时存在。比如,一个函数中,可以同时有必填参数,可选参数,可变参数,可变命名参数。

示例:多种类型的参数在一个函数中。

闭包函数概述

闭包函数实际上就是一种遵循规范的内部函数。闭包函数必须返回的事一个内部函数,且这个内部函数中,必须使用了外部函数的变量。一个简单的闭包函数示例如下:

匿名函数概述

匿名函数指的是没有函数名的函数,也叫lambda函数。不过,我们可以通过让函数赋值给一个变量名,让匿名函数有自己的名字。匿名函数一般用于高级函数中,作为高级函数的参数进行传递。

示例:使用匿名函数求两个数的和。

递归函数概述

递归函数是一种常用于算法的特殊函数,指的是函数在自己的函数体中又调用该函数自身。递归函数的表现有点像是循环,能够重复的执行很多次结果,每次执行,参数都会发生变化,当执行到一定程度以后,函数退出。需要注意的是,在Python中,函数有递归深度的限制,并不能够无限的递归,这点一定要注意。即就是说,递归函数不适合层度非常什的递归场景。

示例:使用递归函数求阶乘。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OxURBuZCeq3RiFcRHR8MAY0g0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券