Python编程-函数编程
1、定义一个函数
有return返回值的才叫函数,没有return返回值的叫做方法过程
def test(x):
"The function defintiions"
x+=1
return x
2、函数参数
形式参数与实际参数
函数参数可以分为形参和实参。
形参:形式参数,不是实际存在的参数,是虚拟的变量。在定义函数和函数体的时候使用形参,目的是在函数调用时接收实参(实参个数、类型应于形参一一对应)
实参:实际参数、调用函数时传给函数的参数,可以是常量、变量、表达式、函数、传给形参
其两者的区别是:形参是虚拟的,不占用内存空间,形参变量只有在被调用时才分配内存单元,实参是一个变量,占用内存空间,数据传送单向,实参传给形参,不能形参传给实参
def test(x):
"The function defintiions"
x+=1
return x
test(a)
函数参数也可以分为位置参数和关键字参数,其中位置参数与参数传递的顺序要保持一致,而关键字参数则无需固定位置
def test(x,y):
print(x)
print(y)
test(y=2,x=1) #关键字参数,与形参顺序无关
test(1,2) #位置参数,与形参一一对应
默认参数
python的函数中还支持给参数设置默认值,在调用的时候可以不输入这些有默认值的参数。
def test(x,y=3): #这里y=3就是一个默认值
return x+y
test(2)
可变参数 args和*kwargs
args:接受N个位置参数,转换成元组
*kwargs:接受N个关键字参数,转出成字典
def test4(name,age=18,*args,**kwargs):
print(name)
print(age)
print(args)
print(kwargs)
test4('alex',age=34,sex='m',hobby='tesla')
#结果打印
alex #位置参数
34 #位置参数
() #由于前面两个位置参数都一一对应了,因此*args无额外的参数
{'sex': 'm', 'hobby': 'tesla'} #**kwargs将关键字参数输出为字典
3、变量
Python中变量可以分为局部变量和全局变量
局部变量:只在函数里面生效的变量,函数就是变量的作用域;除了字符串、数据灯简单的变量外,列表、字典、数组等复杂的变量均可以通过修改函数中的局部变量,已达到修改全局变量的效果。
全局变量:程序运行过程中全局生效的变量,关键字global VAR
#默认情况下,局部变量的修改不会影响全局变量的值
def change_name(name):
print("before change",name)
name ="Alex li" #局部变量,这个变量就是这个变量的作用域
print("After change",name)
name = "alex"
change_name(name)
print(name)
#Alex li
#alex
4、递归函数
递归函数:
在函数的内部,可以调用其他函数,如果一个函数在内部调用自身,这个函数就是递归函数。
递归特性:
1、必须有一个明确的结束条件
2、每次进入更深一层递归时,问题规模相比上次递归都应有所减少
3、递归效率不高,递归层次过多会导致栈移除(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,
每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以递归调用的次数过多会导致栈溢出)
5、高阶函数
变量可以指向函数,函数的参数能够接受变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数
本文来自博客园,作者:酒粒,转载请注明原文链接:https://www.cnblogs.com/charliewch/p/16536599.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)