Python之函数篇

本文详细介绍了Python中的函数,包括函数的必要性、优点、变量分类、参数类型、默认参数、可变参数、关键字参数、匿名函数和递归函数。通过实例解析了函数的定义、调用方式以及参数传递机制,帮助理解Python编程中的函数使用。

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


  • 必要性:开发程序中,某程序段被多次需要,就可以将其封装成一个函数,在每次使用的时候再导入这个函数模块直接使用
    优点:提高编写效率,减少代码的重用
    函数中的变量x是任意数吗?
    python中的函数的变量x可以是整型、浮点型,甚至字符串,等等,理论上就是一个占位符。
    空函数:如果还未想好代码的编写,可以先写pass,让代码正常运行不报错。

  • 创建函数&调用函数
    函数的格式:
    def 函数名(参数1,参数2…参数n):
    函数体
    函数名:
    |名称|示例 |
    |–|--|
    | 匈牙利命名法 |sUserName |
    |驼峰式大小写(最常用)|userName|
    |帕斯卡命名法|UserName|

定义函数def
调用函数:函数名(变量)
定义函数是不会执行的,没有结果返回
只有调用函数的时候才会有返回值
返回值是存储函数的运算结果到变量中继续操作与运算
在这里插入图片描述
print可以输出但是不保存返回结果
return只能返回一个对象,如果需要返回多个,将内容封装为一个元组返回
print((result))

使用函数的优点:

  1. 降低编程的难度(分而治之的思想)
  2. 代码重用。避免了重复劳动,提供了工作效率。
  • 变量分类(按照作用域)
  1. 相同名称的变量根据其不同的作用域被分为:局部变量和全局变量
  2. 局部变量:1).在函数内部定义的变量
    2).不同函数,定义相同的局部变量名称,互不影响
    3).局部变量为了临时保存数据需要在函数中定义变量来进行存储,这就是它的作用。
    在这里插入图片描述
  3. 全局变量:在一个函数中使用,也能在其他函数中使用
    在这里插入图片描述
    1).用global声明全局变量
    global的本质为生命可以修改全局变量的指向,即变量可以指向新数据。
    不可变类型的全局变量: 指向的数据不能修改, 不使用global时无法修改全局变量。
    可变类型的全局变量: 指向的数据可以修改, 不使用global时可以修改全局变量。
    2).不用global的全局变量声明法:
    在这里插入图片描述
  • 参数分类
#定义接收2个参数的函数
def add2num(a,b):
				c=a+b			#此处的a,b为形参,形式参数
				print c

#调用带有参数的函数
add2num(10,23)			#此处的10,23为实参,实际参数

定义时小括号中的参数,用来接收参数用的,称为 “形参”
调用时小括号中的参数,用来传递给函数用的,称为 “实参”

  • 参数传递
  1. 调用参数时,
    1). 如果参数个数不对,Python 解释器会自动检查出来,并抛出 TypeError
    2). 如果参数类型不对,Python 解释器就无法帮我们检查。数据类型检查可以用内置函数 isinstance 实现

  2. 默认参数:默认参数可以降低调用函数的难度。

  • 默认参数注意事项:
    有多个参数时,变化大放前面,变化小的放后面;
    必选参数在前,默认参数在后

返回值必须打印才能显示
必选参数:必须传值
默认参数:如果不传值,就会采用默认值

def  fun( a,b=2, myfun = pow):
			"""a接收,b接收,fun接收函数名"""
			print('a=:',a,end=';')
			print('b=:',b,end=';')
			print('result=',myfun(a,b))
#调用函数:
fun(5)
fun(5,3,lambda x,y: x+y)

"fun(5)"中的5为形式参数a对应的实际参数,而b得实际参数没有告知,则采用得是程序默认得参数。

  1. 可变参数(*args)
    可变参数就是传入的参数个数是可变的,不固定,可以是1个,2个或任意个,也可以是0个。
    在这里插入图片描述
    程序可以改变参数名,如:a,但默认情况下都设置为args
    如果已经有一个 list 或者 tuple,要调用一个可变参数怎么办?
    1). Python 允许你在 list 或 tuple 前面加一个 * 号;
    2). 把 list 或 tuple 的元素变成可变参数传进去;
largs = [1,2,3]
func(largs[0],largs[1],largs[2])
func(*largs)
  1. 关键字参数(kwargs)
    关键字参数允许传入 0 个或任意个含参数名的参数;
    这些关键字参数在函数内部自动组装为一个字典 dict;
    关键字参数用
    kwargs;

  2. 参数组合
    1). 参数组合是指可以必选参数、 默认参数、 可变参数和关键字参数一起使用。
    2). 参数定义的顺序必须是:必选参数、 默认参数、可变参数和关键字参数。

  • 匿名函数
    匿名函数指一类无须定义标识符的函数或子程序。
    Python用lambda语法定义匿名函数,只需用表达式而无需申明。(省略了用def声明函数的标准步骤)
#定义匿名函数
sum=lambda arg1,arg2:arg1+arg2
#调用匿名函数
print("总和为:",sum(11,22))

lambda函数的语法:

lambda [参数1,参数2,....参数n]:expression

它可以接收任何数量的参数,但是只返回一个表达式的值

应用1:作为参数传递

def  fun( a,b=2, myfun = pow):
			"""a接收,b接收,fun接收函数名"""
			print('a=:',a,end=';')
			print('b=:',b,end=';')
			print('result=',myfun(a,b))
#调用函数:
fun(5)
fun(5,3,lambda x,y: x+y)

结果为:

a=5; b=2; result=25
a=5; b=3; result=125

num=[1,2,3]
*num指对num列表解包,1,2,3
这种格式还可以对元组,集合进行解包,解包功能只有python3有

set={1,2,3.4,3,2,2,2}
set={1,2,3,4}集合会自动去重

匿名函数作为参数传递的

排序方法:li.sort() sorted
可迭代的:列表、元组、集合
在这里插入图片描述
应用2: 作为内置函数的参数

  • 递归函数
    定义:已知: 函数可以调用函数。结论: 一个函数在内部调用自己本身,这个函数就是递归函数。
    递归函数的原理示意图:
    在这里插入图片描述

应用1:斐波那契数列
在这里插入图片描述
应用2:汉诺塔
在这里插入图片描述
应用3:计算阶乘
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值