python中的函数
一、什么是函数
函数是一种行为,是一个功能,是一个动作
它是一个具有名称的功能代码集合
一段用来解决某一问题的代码或者指令,具有名称的集合
二、为什么使用函数
减少代码重复
三、如何定义函数
def 函数名(参数列表):
要执行的代码
…………
return 返回值
举个例子
def stairs(num):
if num == 1:
return 1
elif num == 2:
return 2
return stairs(num-1) + stairs(num-2)
x = int(input("请输入楼梯的阶数:"))
res = stairs(x)
print(res)
四、调用函数
函数定义好后,需要调用函数才能使函数内的代码生效
//定义函数
def 函数名(参数列表):
要执行的代码
…………
return 返回值
//(调用函数)
函数名称(参数列表)
如果def对应的括号里有参数,在调用函数时括号里也要加上参数,如果没有的话,就不加
在调用函数的过程中,函数在python里本质就是一个对象,调用函数时为压栈(push),调用完成后函数要立刻出栈(pop)
五、函数的分类
有无参数
有参函数 def 函数名(参数列表):
无参函数 def 函数名():
是否存在返回值
有返回值的函数——————如果调用者需要运行结果,则使用return关键字返回这个结果
无返回值的函数
定义者
系统函数——————由python官方定义的
第三方函数——————做python的公司,或者个人,他们制作好并且封装的模块或者框架,可供其他人下载
自定义的
六、全局变量在函数中的使用
全局变量(global variable):定义在py文件中
局部(本地)变量(local variable):定义在函数或者类内部的,外界不能访问
注意:在python中,函数内部不允许修改全局变量,如果要在Python中强制修改全局变量
在函数第一行,使用"global"将变量名称声明
num = 10
def test():
#如果硬要修改全局变量的话,需要申明需要修改全局变量
global num
num2 = 30
print("hello")
print(num)
#要求将num + 10
num += 10
print(num)
print(num2)
print(num+num2)
test()
最终结果
hello
10
20
30
50
七、局部变量
局部变量是在函数内部声明的变量,且只能在函数内部使用,因为在python中存在垃圾回收机制,函数执行结束这个变量就会被回收,出了函数这个变量就不认识了(垃圾回收机制回收了内存)
def wendang():
name = "wenben"
print(name)
wendang()
八、引用传递和值传递
引用传递:传递的是对象的地址(也就是对象),因此会对对象的值产生影响
值传递:仅仅会传递变量的值,不会对变量本身产生影响
九、参数
默认值参数:
在函数定义时,如果一些参数的值,一般都是不变的某个值,则可以将该参数设置为默认参数,这样使调用者更方便
def getCircle(r = 5, PI = 3.141592653):
a = PI * r**2:
return a:
print(getCircle())
可变参数:
*args——表示元组,可变参数,以元组的形式保存所有的可变参数
args在这里为参数的意思
def printInfos(*infos):
for i in infos:
print(i)
//调用的时候传递几个,则显示几个
printInfos("我的世界","mc","史蒂夫","沙盒");
printInfos("穿越火线","保卫者","潜伏者","爆破","排位");
命名参数(关键字参数):
**kwargs——kw(keyword关键字)以字典类型保存所有命名的参数
def printLGD(msg,name,**kwargs):
print(msg,name)
print(kwargs)
printLGD(msg = "12",name="Mike",age="50",gender="男");