一、定义
1.函数
1).函数包括定义函数,调用函数。定义函数使用 ----def 函数名(参数) ------的方式。
2).定义函数可以增加可读性和复用性。
3).函数有参数和返回值,函数内容就是函数体。
2.参数
1)形参:在函数定义的时候,不知道传入的值是多少,但函数体内部需要使用,于是写入形参。形参的名字和函数体内使用的名字必须一致。
2)实参:在实际调用函数的时候,传入的参数。实参和形参的命名可以不一致。
3.返回值
1)返回值是函数执行完之后返回(return)的结果,如果不接收就令此值回收。
2)函数如果执行到return语句,函数停止运行。如果是分支中有return,但没有运行到那个分支,不会停止运行。
二、函数分类
1.从返回值讲
1)没有返回值
不写return 只写return 或者return None
def func1(): print("asdf") func1()
def func1(): a=10 b=20 print(a+b) return func1()
def func1(): a=int(input("请输入一个1-10的数:")) for i in range(1,10): print(i) if i == a: return None return None print(func1()) #None
2)返回一个值
这个值可以是任意类型的值。如果之后会用到,可以在调用函数之后用变量接收返回值。
def func1(a=10,b=20): sum=a+b return sum s=func1() print(s)
3)返回多个值
返回的多个值可以用一个变量以元祖形式接收,也可以用多个变量依次接收。
def func1(a=10,b=20): sum=a+b return sum,a,b #用一个变量接收 s=func1() print(s) #多个变量依次接收 x,y,z=func1() print("sum=",x) print("a=",y) print("b=",z) # (30, 10, 20) # sum= 30 # a= 10 # b= 20
2.从参数讲
1)没有参数
函数体内不需要有外部传入的参数
def func1(): a=10 b=20 sum=a+b return sum,a,b #用一个变量接收 s=func1() print(s)
2)有一个参数
--- def 函数名(参数)----的方式就可以,参数可以是默认传参,即如果在调用时不传入相应参数,就按照函数定义时的参数设置执行,如果调用时有参数传入,按照传入参数执行。
def func1(a=10): b=20 sum=a+b return sum,a,b #用一个变量接收 s=func1(6) print(s) #(26, 6, 20)
3)有多个参数
--- def 函数名(参数1,参数2,……),也可以默认传参。
不确定的多个参数可以使用---*args---的方式传入,多层参数也可以使用---**变量名---的方式传入。
def funmx(a,b,*args): sum=a+b for i in args: sum+=i print(sum) return funmx(2,3,1,2,3,3,4,5) #23
def funmx(a,b,*args,c): sum=a+b+c for i in args: sum+=i print(sum) return funmx(2,3,1,2,3,3,4,c=5) #指定参数名传递,否则后面一串会依次被认为是*args中的 #23
def funcs(x,*args,**kwargs): #*args+**kwargs几乎是万能的 sum=x for i in args: sum+=i for i in kwargs.values(): sum+=i print(sum) nums=[3,4] numm={"num1":5,"num2":6} funcs(1,2,*nums,**numm) #21
----------------------------------------------------一个示例------------------------------------------------------------
def funcx(x): if type(x) is list and x: for i in x: if x== '': return True elif x and type(x) is list or type(x) is tuple: for i in x: if not i: return False
a=10 b=20 c=a if a>b else b #三元运算符。和c++里面的? :不一样 print(c)