python之函数
Posted Balllyh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python之函数相关的知识,希望对你有一定的参考价值。
一、认识函数
概念:函数也叫方法,实现特定功能的代码段。要用的时候,只需要调用下函数名即可。
使用函数的好处:
- 简化代码,减少重复性代码的编写,提高代码的复用性
- 提高代码可维护性,函数功能需要修改时,只需要修改函数内部的代码,所有用到函数的地方也能及时更新
函数的定义:
#函数调用时才会被执行,调用时用函数名() def 函数名(参数列表): 函数体
def my(name,sex):#my是函数名,name和sex是位置参数,也叫形参 #位置参数,必填 print("姓名:%s"%name) print("性别:%s"%sex) #默认值参数 #函数体 my("liuyihan","女")#liiyihan,女这是调用时实际传入的参数,即实参
1.1 return的作用
def add(a,b): c=a+b return c def add2(a,b): c=a+b print(c) print(add(2,3))#打印调用函数的返回值,add中有返回值 print(add2(1,2))#打印调用函数的返回值,add2中没有return时,默认返回None 运行结果: 5 3 None
在函数中,return中两个作用:
- 结束函数,只要在函数里遇到return,函数立即结束运行
- 返回函数处理的结果
注意:无return时,默认返回值为None
二、函数的参数类型
定义函数时的参数为形参,调用函数时实际传入的值为实参。
形参只有在函数调用时才分配内存空间,调用结束后,立即释放内存空间,所以形参只在函数体内存在。
实参可以是常量,变量,表达式,函数,函数调用时,必须传入的是具体值,把具体的数值传给形参。
2.1 位置参数(必填参数)
ef my(name,sex):#my是函数名,name和sex是位置参数,也叫形参 print("姓名:%s"%name) print("性别:%s"%sex) my("liuyihan","女")#liiyihan,女这是调用时实际传入的参数,即实参 运行结果: 姓名:liuyihan 性别:女
顾名思义,根据位置来传参,有几个参数,调用时相应地传几个参数,多或少了都会报错。上述程序中,name和sex是位置参数,调用时必填。
2.2 默认参数(非必填)
def db_connect(ip,port=3306):#port=3306就是kebian默认参数 print(ip,port) db_connect(‘118.24.3.40‘,3307)#指定默认参数的值为3307 db_connect(‘118.24.3.40‘)#没有指定默认参数的值
就是定义函数时给某个参数给个默认值,调用时,若给默认参数传了值,就用你传入的值;不传就用默认值,不会报错。
2.3 可变参数(非必填)
可变参数用于参数比较多且不确定的情况下,定义函数时,直接写参数组*args,可以不填。
def users(name,userid,*args): print("姓名:%s,学号:%s"%(name,userid)) print("其他个人信息:%s",args) users("liuyihan",‘2011212968‘,‘深圳‘,‘18‘,‘160‘) #args是参数组 #可变参数都是放在一个元组里的 #不限制参数的个数
上述代码,运行结果: 姓名:liuyihan,学号:2011212968 其他个人信息:%s (‘深圳‘, ‘18‘, ‘160‘)
2.4 关键字参数(非必填)
不限制参数的个数,通常用**args表示
def users(**kwargs): #1、不是必传的 #2、不限制参数个数 #3、传入的参数放到key-value字典里 print(kwargs) users() users(name=‘liuyihan‘,sex=‘nv‘) users(addr=‘北京‘,country=‘中国‘,c=‘abc‘,f=‘kkk‘) 运行结果: {} {‘sex‘: ‘nv‘, ‘name‘: ‘liuyihan‘} {‘addr‘: ‘北京‘, ‘c‘: ‘abc‘, ‘country‘: ‘中国‘, ‘f‘: ‘kkk‘}
注意:如果四种参数一起使用,顺序是位置参数>默认参数>可变参数>关键字参数
三、变量作用域
全局变量:在变量所有范围都能使用;局部变量:在一定区域内才能使用。
所有函数都能使用全局变量,只能在函数内部使用局部变量
#第一种情况,函数内部有name变量,取值时取函数内部name值 name = ‘wangcan‘#全局变量 def get_name(): name=‘hailong‘ print(name) get_name() 运行结果: hailong #第二种情况,函数内部无name变量,取值时先在函数内部找,找不到,在函数外部找,找到打印出来 name = ‘wangcan‘#全局变量 def get_name(): print(name) get_name() 运行结果: wangcan
#第一种情况 name = ‘wangcan‘#全局变量 def get_name(): name=‘hailong‘ print("函数内部的变量:",name) get_name() print("函数外部的变量:",name) 运行结果: 函数内部的变量: hailong 函数外部的变量: wangcan #第二种情况,函数内部的值可见于函数外 name = ‘wangcan‘#全局变量 def get_name(): global name#声明全局变量,在函数内部的变量值可用于全局变量 name=‘hailong‘ print("函数内部的变量:",name) get_name() print("函数外部的变量:",name) 运行结果: 函数内部的变量: hailong 函数外部的变量: hailong
四、递归函数
函数内部可调用函数,如果一个函数在内部调用自己,那就是递归函数。递归函数可起到循环的作用
def test(): num=int(input("请输入一个数字")) if num%2==0: return True#如果是偶数,就返回True,结束函数,遇到return就立即结束函数 print("如果不是偶数,请重新输入!:") return test() print(test())
五、高阶函数
一个参数是函数的函数称为:高阶函数
def srint(n):#将n转换成int类型 return int(n) def add(x,y,z):#三个参数,z是函数 return(z(x)+z(y))#z函数的返回值相加 print(add(9.2,4.5,srint))#注意函数作为参数时,不需要带括号
以上是关于python之函数的主要内容,如果未能解决你的问题,请参考以下文章