一、函数的作用:
函数用来是实现单一或者相关联功能的代码段,减少代码的重复和提高可读性。
二、函数的定义
定义函数的规则如下:
函数代码是以def关键字开头,后面是函数名和圆括号()。
函数的第一行语句可以选择性的使用文档字符串--用于存放函数声明。
函数体要缩进
函数的语法:
def 函数名() 函数体
函数的实例
def return1(): # def 是函数的关键字,return1是函数名 print('11111111') print('22222222') print('33333333') return1()
函数的调用
定义一个函数,给了函数一个名称,指定了函数里面包含的参数,和代码块结构。
定义一个函数后,会将这个函数加载到内存中,函数中的函数体不会执行,只用调用这个函数后才会执行函数里面的函数体,如下实例:
#!/usr/bin/python # -*- encodeing:utf-8 -*- def mylen(s): i = 0 for k in s: i += 1 return i b = mylen('caoyanfei') #此处就是调用函数 c = mylen('dshdgshjfgjhdsfgsdjhdsjf')#此处就是调用函数 print(b) print(c)
函数返回值(return)
不写return 返回是None
只写return 结束一个函数,(默认返回值为None)
返回一个值 可以返回一个任意类型的数据
返回多个值 返回多个值用多个变量接收,有多少个值就使用多少个变量,也可以使用一个变量接收,返回的形式是数值以元祖的形式,如下实例:
#!/usr/bin/python # -*- encodeing:utf-8 -*- # def return1(): # def 是函数的关键字,return1是函数名 # print('11111111') # print('22222222') # return # print('33333333') # return1() #只有return 是结束整个函数的继续 # def return2(): # print('4512') # print('2455') # ret = return2() # print(ret) #没有返回值,默认返回None # def return2(): # ll = [1,2,3,4,5,6,7] # count = 0 # for i in ll: # count += 1 # return count # ret = return2() # 返回单个数值 # print(ret) # def rerurn3(): # return 1,2,3,4 # ret1,ret2,ret3,ret4 = rerurn3() #有多少个数值就用多少个变量接收0 # print(ret1,ret2,ret3,ret4) # def rerurn4(): # return 1,2,3,4 # ret = rerurn4() # print(ret) #多个数值使用一个变量接收,返回的形式是以元祖的形式。
三、参数
实参:
按照位置传参,必须是顺序一一对应才可以,实例如下:
#!/usr/bin/python # -*- encodeing:utf-8 -*- def func(x,y): #括号中的代表形参 return x,y ret = func(1,2) #括号中的值就是按照位置进行传参,x=1,y=2 print(ret)
按照关键字传参,顺序可以不对应,实例如下:
#!/usr/bin/python # -*- encodeing:utf-8 -*- def func(x,y): #括号中的代表形参 return x,y ret = func(y=1,x=2) #括号中的值就是按照关键字进行传参,x=2,y=1 print(ret)
混合传参,此项需要注意它的传参顺序:必须按照位置传,在按照关键字传,实例如下:
#!/usr/bin/python # -*- encodeing:utf-8 -*- def func(x,y,z,c): #括号中的代表形参 return x,y,z,c ret = func(1,2,c=1,z=10) #括号中的值必须按照混合传参的规则顺序才可以,否则会报错 print(ret)
形参:
按照位置传参与实参一样,实例参考实参的代码:
默认参数 就是在定义形式参数是就已经设置完成,实例代码如下:
#!/usr/bin/python # -*- encodeing:utf-8 -*- def classmate(name,sex='男'): # 此处的sex已经设置为默认参数,在添加人数时默认添加新成员的性别都是男性。 print('%s : %s'%(name,sex)) classmate('曹艳飞') classmate('方少伟') classmate('朗哥',sex= '女') # 如果出现不同的性别可以在添加新成员时修改性别
动态参数*args:是不定长参数,它是接收多个按照位置参数
动态参数**kwargs 也是不定长参数,它是接收多个按照关键字的参数
参数的顺序:位置参数===》*args===》默认参数===》**kwargs,实例如下:
#!/usr/bin/python # -*- encodeing:utf-8 -*- # def func(*args): # return args # ret = func(1,2,3,4) # print(ret) # def func(a,b,c,*args): # return a,b,c,args # ret = func(1,2,3,4,5,6) # print(ret) # def func(a,b,c,*args,sex='man'): # return a,b,c,args,sex # ret = func(1,2,3,4,5,6,sex='女') # print(ret) # def func(*args,**kwargs): # for i in args: # i = str(i) # i = tuple(i) # return args # a = [1,2,3,4,56,7] # ret = func(a) # print(ret)