Python语言之函数详解

本文详细介绍了Python中的函数,包括函数的定义与调用、参数类型、return语句、lambda匿名函数、递归函数的使用以及文档注释。还探讨了变量作用域的LEGB原则和内建函数与工厂函数的概念。学习这些内容有助于提升Python编程的模块化和效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

函数的定义与调用

函数的参数

return语句

lambda 匿名函数

递归函数

文档注释

变量作用域

内建函数与工厂函数


函数的定义与调用

在开发语言中,函数是指实现某个功能的一段代码。

定义函数 —— def

调用函数 —— 函数名( )

使用函数的好处

  • 模块化程序设计
  • 减少代码冗余
  • 维护方便

函数的参数

参数的形式

  • 形参——函数中的参数名称

  • 实参——提供给函数调用的值

形参

# 必选参数(位置参数)
在调用时必须要填

# 默认参数
提供默认值,调用时可填可不填
设置默认参数时,有两点注意事项
1.必选参数在前,默认参数在后,否则python解释器会报错
2.默认参数一定要指向不变对象

# 可变长位置参数
格式:*args		# 把传递进来的位置参数打包成一个元组赋给args
在参数前加*号
可变长位置参数以元组形式传递
可变长位置参数传递的是参数值
可变长位置参数和可变长关键字参数都可以接受0个或者多个参数

# 可变长关键字参数
格式:**kwargs		# 把传递进来的关键字参数打包成一个字典,赋给kwargs
这是惯用写法,建议使用,容易被理解
可变长关键字参数以字典形式传递
可变长关键字参数传递的是参数名:参数值键值对
可变长位置参数和可变长关键字参数都可以接受0个或者多个参数

实参

主要是位置参数和关键字参数。

定义顺序

带等号传递的参数放后面,不带等号的参数传递放前面

  • 形参:必选参数,可变长位置参数,默认参数,可变长关键字参数

  • 实参:位置参数,关键字参数

return语句

退出函数,并且返回结果;函数中,代码一旦执行到return就退出,后面的语句不会执行。

如果没有return语句,默认返回None;如果return后面不接任何表达式,也返回None。

lambda 匿名函数

匿名函数格式:lambda x,y : x+y

匿名函数有个限制,就是只能有一个表达式。

匿名函数不用写return,返回值就是该表达式的结果。

什么时候使用匿名函数

当函数只是实现非常简单并且一次性使用时,可以定义为匿名函数。

当我们在传入函数时,不需要显式地定义函数,直接传入匿名函数更方便。

递归函数

指在函数的定义中使用函数自身的方法,即自己调用自己。

使用递归函数需要定义好出口,即什么时候停止递归

递归是把一个大问题划分成规模更小的问题。每次递归都会将结果保存在内存中,非常占用内存,并且效率低,所以能不用递归尽量不要使用。

文档注释

注释分类

  • 单行注释

  • 多行注释

  • 特殊注释

两种特殊注释:

#--coding:utf-8--       告诉Python解释器,使用什么编码

#!/usr/bin/python3    Python告诉Linux默认情况下使用哪个解释器去运行

变量作用域

变量作用域,顾名思义,就是变量起作用的范围。

global语句

使用global语句可以清楚地表明变量是在外面的块定义的。

global语句被用来声明变量是全局的。

如果一定要在全局范围内使用函数内的变量,可在定义时,声明成global。

LEGB原则

变量名的解析需要遵循LEGB原则。

LEGB作用域查找原则,当引用一个变量时,python按照以下顺序依次进行查找:

  1. 从本地变量中 -> Local(function)函数内部

  2. 在任意上层函数的作用域 -> Enclosing function locals 嵌套函数内部

  3. 在全局作用域 -> Global(module)

  4. 最后在内置作用域中查找 -> Built-in(python)

内建函数与工厂函数

内建函数

内建函数是指在Python已经建好的函数。

内建方法

一般是针对面向对象而言,是类的方法。

内建方法就是指一个自带的对象所带的方法。

工厂函数

工厂函数就是类型转换函数。

工厂函数是内建函数的一种,工厂函数指这些内建函数都是类对象。当你调用它们时,实际上是生成了该类型的一个实例,就像工厂生产货物一样。

工厂函数主要与数据类型相关。

# 一些常用的工厂函数

int(), float(), complex(), bool() 
str(), bytes() : 字符型
list(), tuple():生成列表或者元组
dict(), set():生成一个字典或集合
slice():切片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_SmallTownKid_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值