函数的返回值,函数的返回值可以不返回,也可以只返回一个值。当有多个返回值的时候,可以以元组的形式返回。
def test1(): print('in the test1') def test2(): print('in the test2') return 0 def test3(): print('in the test3') return 1,'hello',['alex','wupeiqi'],{'name':'alex'} #return test2 x=test1() y=test2() z=test3() print(x) print(y) print(z)
有参数形式的函数
def test5(x,y): #可以设置默认参数def test5(x=1,y=10): print(x) print(y) test5(y = 5,x = 1) #与形参顺序无关 test5(5,1) #与形参顺序一一对应 #test5(x = 5,1) #有位置参数,又有关键字调用,则按照位置参数调用,关键字参数是不能写在位置参数前面的 test5(5,y = 1) #默认参数特点:默认参数可有可无,默认参数非必须传递 #用途:1.默认值,此变量可以在调用函数时不传递 #上面的函数在调用时,传递实参的数量只能比形参少,不能比形参多
针对传递的实参数量不固定,可以传递参数组
def test(x,*args): #'*'表示传递的实参数量不固定 print(args) print('the number of membe is %s'%x) #*args接受的是位置参数,不能接受关键字参数,转换成元组的形式 #函数调用 test(4,2,3,4,5) test(5,*[1,2,3,4,6])
#**kwargs把n个关键字参数,转换成字典的方式 def test2(**kwargs): print(kwargs) print(kwargs['name']) print(kwargs['age']) test2(name = 'shunge',age = '28') test2(**{'name': 'shunge', 'age': '28'}) import time def logger(source): time_format = '%y-%m-%d,%X' time_current = time.strftime(time_format) print('time:%s'%time_current, 'from %s'%source) def test3(name,age = 28,**kwargs): print(kwargs) print(name) print(age) logger('test3') #函数之间的调用 test3('shunge',sex = 5,age = '4')
#函数式编程 #*现在的函数多定义的是一段代码执行的过程 #*函数式编程:更接近于数学运算,一种抽象程度很高的编程范式,纯粹的函数式编程是没有
#*变量的,只要输入是确定的,则输出就是确定,python对函数式编程部分支持,python对
于学习函数式编程不是一个很好的选择
#****函数的局部变量与全局变量 #在子称程序中定义的变量时全局变量,在程序定义开始前的变量称为全局变量 #全局变量与局部变量同名时,存在程序内部局部变量起作用,其他地方全局变量起作用 names = ["alex","two","three"] name_tuple =(1,2,3,4) #元组 def change_name(): names[0] = "金角大王" print('inside func',names) change_name() print(names)
#****高阶函数 #变量可以指向函数,函数的参数可以接收另一个函数作为参数,这种函数称之为高阶函数 def add(x,y): return x+y def mul(x,y): return x*y def deal(x,y,f,f1): return f(x,y)+f1(x,y) z = deal(5,7,add,mul) print(z)