python学习DAY8(函数与函数式编程)
#函数与函数式编程 函数定义: # -*- coding:utf-8 -*- #函数 #这是一个功能实现函数,func1和func2分别调用这个功能 def fun(): with open('a.txt','ab') as f: f.write('end action') def func1(): fun() """The function definitions""" print("in the func1") return 0 #过程(没有返回值的函数) def func2(): fun() """test1""" print("in the func2") ''' x=func1() y=func2() print("from func1 return %s"%x) #输出0 print("from func2 return %s"%y) #输出NONE ''' func1() func2() #①定义的功能函数优化了每个函数即将进行的代码量 ②并且可以扩展功能 当有代码复用时,可以尝试将它定义为一个函数并在相应位置调用即可! 如增加系统时间def fun(): time_format="%Y-%m-%d %X" #定义日期格式 time_current=time.strftime(time_format) #按规定的日期格式传入当前系统日期 with open('a.txt','a+') as f: f.write('%s end action\n' %time_current) ------------------------------- 有参函数 # Author:barry allen # -*-coding:utf-8 -*- def test(x,y): print(x) print(y) test(1,2) #若不显示调用,则与形参一一对应 test(y=2,x=1) #形参的顺序可以在传入参数的时候自定义,即关键字和位置参数之间的关系(即关键字顺序可以自定义) test(3,y=2) #此方式也可以,但是还是按照前两种方式更好!注意,关键字参数不能放到位置参数前面!如有三个参数,如1,2,z=3可以,而1,z=3,6则不行 ---默认参数 def test(x,y=2): print (x) print (y) test(1) #若不显示调用,则按默认参数的值传参,即默认参数非必传参数 test(1,3) test(1,y=3) #此时传入参数的值为3 #用途:1.默认安装值 2.数据库默认连接,如Mysql的端口3306 --------参数组 #参数组用于实参个数不固定,默认为列表传参,输出为元组 def test(*args): #*为功能符号,为不固定个数的时候可以定义 print(args) test(1,2,3,4,5) test(*[1,2,3,4,5]) def test1(x,*args): print(x) print(args) test(1,2,3) #此时可以传入多个参数 #注意!*args只能接收位置参数,转为元组,不能接受关键字参数传参,区别于**kwargs ---------字典 #**kwargs把关键字参数转换为字典的方式 def test2(**kwargs): #字典传参的标准格式 print(kwargs) print(kwargs['name']) #输出指定的字典的key值 print(kwargs['age']) test2(name='lin',age=8,sex='f') #等号左边为字典的key,等号右边为字典的values test2(**{'name':'lin','age':8}) #注意!形参可以有位置参数,默认参数,字典 #注意!**kwargs接收关键字参数,转为字典形式,区别于*args #函数返回值return 1.若将函数语句放置return后,则此函数语句不起任何作用 2.可以定义x=test(),此时x为return 的返回值 ①无定义返回: 输出返回NONE ②return 0: 输出返回0 ③return 1,'a',['1','2'],{'d':'d'}:输出返回相应的返回值 即: 一:无返回值,默认为NONE 二:返回值数=1,返回相应的返回值 三:返回值数>1,返回以元组的形式存放相应的返回值 返回值的作用:根据该函数的返回值结果进行相应的操作