2.函数的传参
3.return
4.lambda匿名函数
1.函数的定义
函数就是对代码进行一个封装。把实现,某一功能的相同代码,进行封装到一起。
下次需要使用时,就不需要再进行代码编写,直接调用即可。
好处:
增加代码的复用性,增加代码可读性,减少代码的编写量,降低维护成本
函数可以看成,解决某类问题的 '工具'
定义方法:
def function_name(a):
print(a)
2.python中函数的参数详解
1.必备参数:参数没有默认值
2.默认参数:参数有默认值,调用函数是可以传参也可以不传参,不传参时,参数是默认值
3.不定长参数: 可在定义时定义,也可在传入时传入
定义方法: def function_name(*args,**kwargs):
*args 将传入参数包装成元组
**kwargs将传入参数包装成字典
return有两个作用:1.用来返回函数的运行结果,或者调用另外一个函数。比如max()函数
2.函数结束的标志。只要运行了return,就强制结束了函数。return后面的程序都不会被执行。
如果函数中没有写return,其实函数运行结束时,默认执行了 return None
return语句的位置是可选的,不是固定出现再函数的最后,可以自定义在函数中的任何地方。
没有函数名的函数
g = lambda x:x+1 # x参数 x+1是retrun
g(4) #调用
lambda简化了函数定义的书写形式。是代码更为简洁,但是使用函数的定义方式更为直观,易理解
lambda的应用场景:
1.有些函数如果只是临时一用,而且它的业务逻辑也很简单时,就没必要用def 来定义,这个时候就可以用lambda。
2.函数都支持函数作为参数,lambda 函数就可以应用
def fun1():
print('没传参')
def fun2(a): #必备参数 可指定
print('必须传参数')
def fun3(b=1): #可传可不传 可指定
print(b,'默认参数')
#1
def fun4(*arg):
print(arg,'随便传') #
'''
不定长参数 :包装成元组
当调用的时候 加一个 * 就会解包
'''
#2
def fun5(**kwarg): #可传可不传
print(kwarg,'可传可不传')
'''
包装成字典
调用的时候,关键字参数 加俩个* 可以传字典
'''
#参数混合时 调用的时候 指定的参数都是关键字参数
'''
定义的时候必备参数必须在默认参数之前
调用关键字参数必须放最后
确保参数拿到值,也不能多拿
'''
def fun6(b,m=1):
pass
def fun7(*arg,b,m=1):
pass
def fun8(b,m=1,*arg): #如果不懂的话就按这个顺序
print(arg)
#1.找到1-100内的质数,结束之后打印“搜索结束”.
#(质数:只能被1和自己整除,如2,只有除以1和2才能整除)
for i in range(1,101):
j=1
n=0
while j<=i:
if i%j==0:
n+=1
j+=1
if n==2:
print('找到质数=%d'%i)
print('搜索结束')
#2.定义一个函数,能够输入字典和元组。
#将字典的值(value) 和 元组的值交换,交换结束后,打印字典和元祖。
tu = (4,5,6)
dic={'a':1,'b':2,'c':3}
def fun(*arg,**kwarg):
arg = list(arg)
i=0
for key in kwarg.keys():
arg[i],kwarg[key]=kwarg[key],arg[i]
i+=1
print(kwarg)
print(tuple(arg))
fun(*tu,**dic)
#3.定义一个函数,必须包含4种参数形式,然后打印这4个参数,最后返回'OK'。
def fun1(a,b=1,*arg,**kwarg):
print('必备参数:',a)
print('默认参数:',b)
print('不定长参数:',arg)
print('关键字参数:',kwarg)
return 'OK'
fun1(1,2,3,4,x=5,y=6)