Python学习之==>函数
一、函数是什么:
函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需要调用函数名就行。
二、函数的作用:
1、简化代码
2、提高代码的复用性
3、代码可扩展
三、定义函数:
1 def SayHello(): #函数名 2 print('Hello')#函数体 3 SayHello() #调用函数,函数不调用是不会被执行的
四、函数的参数
位置参数:必填参数
1 def calc(a,b): #形参,形式参数 2 res = a * b 3 print('%s * %s = %s'%(a,b,res)) 4 calc(8.9,2.7) #实参,实际参数
默认值参数:非必填参数
1 # 操作文件函数(读和写) 2 def op_file(file_name,conent=None): #conent为写的内容 3 f = open(file_name,'a+',encoding='utf-8') 4 f.seek(0) 5 if conent: #conent不为空代表写入文件 6 f.write(conent) 7 f.flush() 8 else: #conent为空时读文件 9 all_users = f.read() #函数里面定义的局部变量只能在函数里面用 10 return all_users #调用完函数之后,返回什么结果 11 f.close() 12 # 把函数返回的结果存入变量 13 res = op_file('a.txt') 14 print(res)
非固定参数(参数组):
1、非必填参数
2、不限定参数个数
3、把所有参数放到一个元组里面
1 def syz(*args): #参数组 2 print(args) 3 username = args[0] 4 pwd = args[1] 5 age = args[2] 6 syz() 7 syz('niuniu','123') 8 syz('niuniu','niuniu','test') 9 def syz2(a,*args): 10 print(a) 11 username = args[0] 12 pwd = args[1] 13 age = args[2] 14 syz2() 15 syz2('niuniu','123') 16 syz2('niuniu','niuniu','test')
关键字参数:
1、非必填参数
2、不限定参数个数
3、把所有参数放到一个字典里面
1 def syz(**kwargs): 2 print(kwargs) 3 syz() 4 syz(name='niuniu',age=23) 5 syz(name='niuniu',age=23,add='回龙观',home='河南') 6 def syz2(time,**kwargs): 7 print(kwargs) 8 syz2('20180418') 9 syz2(name = 'niuniu',age = 23,time = '20180418') 10 syz2('20180418',name = 'niuniu',age = 23,add = '回龙观',home = '河南')
五、全局变量
1、不安全,所有人都能改
2、全局变量会一直占用内存
1 name = '牛牛' #全局变量 2 def sayName(): 3 global name #如果需要修改全局变量,需要先声明 4 name = '刘伟'#局部变量 5 print('name1:',name) 6 sayName() 7 print('name2:',name)
六、递归函数:函数自己调用自己
1、少用递归
2、递归最多调用999次,效率不高
1 def test(): 2 num = int(input('please enter a number:')) 3 if num % 2 == 0:#判断输入的数字是不是偶数 4 return True #如果是偶数的话,程序就退出了,返回True 5 print('不是偶数请重新输入!') 6 return test() #如果不是偶数的话继续调用自己,输入值 7 print(test()) #调用函数
七、函数返回多个值
1 # 定义一个函数返回多个值 2 def say(): 3 num1 = 1 4 num2 = 2 5 num3 = 3 6 return num1,num2,num3 7 # 函数返回多个值会把它放到一个元组里面 8 print(say()) 9 # 函数如果返回多个值,可以用多个变量来接收 10 res1,res2,res3 = say() 11 print(res1) 12 print(res2) 13 print(res3)