1、函数: 函数是指将一组语句的集合经过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名便可。python
def fuc(i): return int(i)
2、函数的优势mysql
一、简化代码sql
二、提升代码可用性app
三、代码可扩展函数
3、函数的参数spa
函数在调用时,能够传入参数,分为形参和实参code
形参:blog
形参变量只有在被调用时才分配内存单元,在调用结束后,即刻释放内存,形参只在函数内部有效。递归
实参:内存
实参能够是变量、常量、表达式、函数等,不管实参是何种类型的量,在调用时,都必须有肯定 的量,以便把值传给形参,调用结束后函数则不能再使用该形参。
def add(x,y): #定义一个函数,参数有x,y,x和y就是形参 print(x+y) #输出x+y add(3,8) #调用函数 3和8就是实参
备注:形参就是函数接收的参数,实参就是实际传入的参数
函数的几种形参
位置参数:
位置参数就是按照参数的位置来传参,上面的add函数,x,y就是位置参数,位置参数必传。
位置参数也可使用这种add(y=8,x=3)形似来调用,这种调用称为关键字传参。
默认参数:
默认参数就是定义形参的时候,给函数一个默认的值,默认参数不是必传的,若是使用默认参数,必须放在位置参数后。
def conn_mysql(user,password,port=3306): #定义函数 print(user,password,port) conn_mysql('root','123456') #默认值
conn_mysql('root','123456',port=3307) #指定默认参数的值
非固定参数:
非固定参数有两种,一种是可变参数,一种是关键字参数
可变参数:
可变参数用*来接收,能够传任意数量参数,若是位置参数、默认参数和可变参数连用,可变参数必须在位置参数和默认参数后面。可变参数也是非必传的。
def more_arg(name, sex, age=18, *args): #传入的其余参数会放在args这个元组中 print(name, sex, age, args) more_arg('Bluse', 'man', 20, 'England', 'python')
关键字参数:
关键字参数使用**来接收,一样是不固定的,关键字一样放到最后,调用时必须使用关键字传参。非必传参数
def keyw_arg(name, **kwargs): print(name,kwargs) keyw_arg('HK', sex='man' ,age=18)
5、函数的返回值
函数都有返回值,若是没有返回值,python会默认返回一个none。若是有多个返回值,将会把返回值放到元组中。
函数中的返回值使用return,函数在遇到return就当即结束。
def multi(x,y): f = x*y return c,x,y res = multi(2,9) print(res)
6、局部变量和全局变量
局部变量意思就是只在局部生效,出了这个做用域就失效;全局变量意思就是在整个程序都生效,在程序的最前面定义的都是全局变量。若是修改全局,须要加global声明,若是修改list、字典和集合的话,则不须要加global关键字。
name = 'Jack' #字符串全局变量 names = [] #list全局变量 print(name) print(names) def fuc(): global name #声明修改变量 name = 'HK' names.append(name) #修改list全局变量 return names fuc() print('修改后', name) print('修改后', names)
7、递归调用
在函数内部,能够调用其余函数。若是函数内部本身调用本身,这个函数就是递归函数。
def recur(): num = int(input('please enter a number:')) if num%2==0: #判断输入数字是否是偶数 return True #若是是偶数就退出,赶回true print('it is not a even number, please try again!') return recur() #不是偶数,继续调用,从新输入 print(recur()) #调用recur
递归调用的特色:
一、必须有一个明确的结束条件
二、每次进入更深一层递归,问题规模比上次递归应有所减小
三、递归效率不高,递归层次过多会致使栈溢出
8、高阶函数
def f_int(n): #定义一个函数,把传入的参数转换成int类型 return int(n) def calc(x,y,z): #定义一个函数,接收3个参数,分别是x,y,z。z是一个函数 print(z(x)*z(y)) #z是一个函数把x,y的值传给z,而后z函数返回的值相乘 calc('4', '5', f_int) #调用,传入x,y的值,再传入上面定义好的函数