''' function 功能,函数 问题:一个由数字组成的列表,每次取其中两个判断大小,最后找出这个列表中最大的数 函数就是对代码进行一个封装。把实现,某一功能的相同代码,进行封装到一起。下次需要使用时,就不需要再进行代码编写,直接调用即可。 好处: 增加代码的复用性,增加代码可读性,减少代码的编写量,降低维护成本 函数可以看成,解决某类问题的 '工具' 定义方法: ''' def function_name(params): block return expression(表达式)/value ''' def 关键字表示定义一个函数 function_name 函数名,和变量名的命名要求相同,以字母和_开头,可以包含字母、数字和_ params 表示参数,可以是零个,一个 或者多个参数,函数参数不用指定参数类型 '''
例子
def fun(a): print('hello',a)
2.python中函数的参数详解
1.必备参数:参数没有默认值 2.默认参数:参数有默认值,调用函数是可以传参也可以不传参,不传参时,参数是默认值 3.不定长参数: 可在定义时定义,也可在传入时传入 定义方法: def function_name(*args,**kwargs): *args 将传入参数包装成元组 **kwargs将传入参数包装成字典
例子:
#不需传参数 def fun(): print('hello python') print('人生苦短,我用python') #必备参数 def fun2(a): print('必备参数:',a) #默认参数 def fun3(a=3): print('默认参数:',a) #可选参数 0个-多个 #*arg def fun4(*arg): #默认将我们的传入参数,包装成元组 print('arg:',arg) fun4(1,2,4,5,6,7) fun4(li,1,2,4,'ssss',{'a':2}) tu =(1,2,3,4) fun4(*tu) fun4(*li) fun4(*{'s':2}) #**kwarg def fun5(**kwarg): #默认将我们传入的参数,包装字典 print('kwarg',kwarg) #空集合 se = set() #空字典 {} di = dict(a=1) ## **kwarg 传值的时候,必须要满足字典的定义 fun5(a=1,b=3,c=4,d=5) fun5(**di) ###5种传参,混合用时,需要足以的事项 ''' 1.默认参数,必备参数 2.*arg ,默认参数,必备参数 3.*arg,**kwarg ''' #1 def fun6(b,m=2): #默认参数,必须放到,必备参数之后 print('必备参数',b) print('默认参数',m) fun6(1,3) fun6(m=10,b=5) #2 def fun7(b,m=2,*arg): print('必备参数',b) print('默认参数',m) print('arg',arg) def fun8(*arg,b,m=2): #当*arg 在最前时,后面参数,必须指定 print('必备参数',b) print('默认参数',m) print('arg',arg) #fun8(1,2,3,4,5,6,7) fun8(1,2,3,4,5,b=6,m=7) fun8(1,2,3,4,5,m=6,b=7) def fun9(*arg,m=2,b): #当*arg 在最前时,默认参数可以放到必备参数前面 print('必备参数',b) print('默认参数',m) print('arg',arg) fun9(1,2,3,4,5,b=6,m=7) #3 def fun10(*arg,**kwarg): # **kwarg,只能放到最后 print('arg',arg) print('kwarg',kwarg) fun10(1,2,3,4,5,6,7) # arg (1, 2, 3, 4, 5, 6, 7) # kwarg {} fun10(1,2,3,4,a=2,b=3)
return有两个作用:1.用来返回函数的运行结果,或者调用另外一个函数。比如max()函数 2.函数结束的标志。只要运行了return,就强制结束了函数。return后面的程序都不会被执行。 如果函数中没有写return,其实函数运行结束时,默认执行了 return None return语句的位置是可选的,不是固定出现再函数的最后,可以自定义在函数中的任何地方。
例子
#如果函数中没有写return 其实函数运行结束时,默认执行了 return None a =fun() print(a) def test_return(a,b): if a>b: return a elif a<b: return b else: return '一样大' print('比较结束*****') #不会打印 #return print 进行区别: #return:返回函数运行的结果 #print :打印输出,只是用来看的 def test_return2(a,b): return 'jianeng' if a>b: print( a) elif a<b: print( b) else: print( '一样大') print('比较结束*****')
4.lambda匿名函数
没有函数名的函数 g = lambda x:x+1 lambda简化了函数定义的书写形式。是代码更为简洁,但是使用函数的定义方式更为直观,易理解 lambda的应用场景: 1.有些函数如果只是临时一用,而且它的业务逻辑也很简单时,就没必要用def 来定义,这个时候就可以用lambda。 2.函数都支持函数作为参数,lambda 函数就可以应用
例子
#lambda x(参数) :x +1 (return x+1) (lambda x :x +1)(5) g = lambda x:x+1 g(1) #传入多个参数 add = lambda x,y:x+y #判断偶数? b =lambda x:x%2==0 def judge(x): if x %2==0: return True else: return False
5.作业
1 判断1 - 100 内能够被 3 和 5 整除的数,用while和for循环来做
#方法1 for循环 for i in range(1,101): if i % 3 == 0 and i % 5 ==0: #同时被3和5整除 print(i) #方法2 while循环 i=1 while i <= 100: if i % 3 == 0 and i % 5 ==0: print(i) i+=1