函数:是一个可以被重复调用的带有一个入口和一个出口的固定的程序段。
1、减少冗余的代码
2、代码结构清晰
3、保持代码的一致性
1、函数名一般以小驼峰命名,见名知意,其余要求与变量的命名一样
2、函数后面的()叫做参照括号
def 函数名(形参)
代码块
return
3、例如
def test_example() :
print("Hello World....")
test_example()
函数的调用方法:函数名(实参)
1.函数没有调用的话不会执行
2.参照括号内若定义形参,那么调用时要传对应的实参
3.定义函数时参照括号内定义的参数称为形参
4.在调用函数的时候我们传递的值称为实参
def test_example2(name):
str=name+ '王者荣耀'
#返回函数处理结果:str
return str
#调用函数:test_example2(),并传入实参name="和平精英"
print(test_example2("和平精英"))
5.可以发现其实参照括号是函数的入口,return是函数的出口。我们可以定义多个形参
def test_example3(name,age):
str1=name + '的年龄是: '+age
return str1
#调用函数
a=test_example3('凯哥笑的孤独','22')
print(a)
按照参数类型划分:位置参数,关键字参数,默认参数,参数组
位置参数是我们在传参的时候,实参传递的顺序按照形参定义的顺序进行传递的传参方式
def test_example4(name,city):
#str2=name + '居住地址在: '+city
str2='I am {} ,I come from {} '.format(name,city)
return str2
#调用函数
a=test_example4('zhansan','上海')
print(a)
b=test_example4("wangwu","北京")
print(b)
关键字传参是我们在传参的时候,以形参等于实参的形式忽略形参定义的顺序进行传参的传参方式因为Python中解释器能够用参数名匹配参数值。
def test_example5(name,city):
str3='I am {} ,I come from {} '.format(name,city)
return str3
#调用函数
a=test_example5(name="zhangsan",city="上海")
print(a)
b=test_example5(name="wangwu",city="北京")
print(b)
默认值传参是在我们定义参数的时候,我们给形参一个默认值,在我们调用函数的时候,如果没有给有默认值的形参传参,会自动采用默认值。
def test_example6(name="null",city="中国"):
str3='I am {} ,I come from {} '.format(name,city)
return str3
#调用函数
a=test_example6(name="zhangsan")
print(a)
b=test_example6(city="北京")
print(b)
c=test_example6(name="wangwu",city="广州")
print(c)
//执行结果
I am zhangsan ,I come from 中国
I am null ,I come from 北京
I am wangwu ,I come from 广州
处理比当初声明时更多的参数,会将传入的参数变成元组(args)或者字典(**kwargs),声明的时候不用命名
*1、元组参数组:args
通过给形参前面添加使参数变成一个元组,所有传递的参数变成元组的元素
def test_example7(*args):
print(args)
test_example7()
test_example7(1,2)
test_example7(1,2,3,'adashf')
//执行结果
()
(1, 2)
(1, 2, 3, 'adashf')
2、字典参数组:kwargs
通过给形参前面添加使参数变成一个字典,所有传递的参数变成字典的键值对,返回传参要求键等于值的形式
def test_example8(**kwargs):
print(kwargs)
test_example8()
test_example8(a=1)
test_example8(a=1,b=2)
test_example8(a=1,b=2,c='ashj')
//执行结果
{}
{'a': 1}
{'a': 1, 'b': 2}
{'a': 1, 'b': 2, 'c': 'ashj'}
def test_example9(e,f,g=2,*args,**kwargs):
a=args
b=kwargs
zk=e,f,g,a,b
return zk
zk1=test_example9(1,2)
print(zk1)
zk2=test_example9(1,2,3)
print(zk2)
zk3=test_example9(1,2,3,4)
print(zk3)
zk4=test_example9(1,2,3,4,5,6)
print(zk4)
zk5=test_example9(1,2,3,4,c=6)
print(zk5)
zk6=test_example9(1,2,3,4,5,6,a=1,b=2,c=3)
print(zk6)
//执行结果
(1, 2, 2, (), {})
(1, 2, 3, (), {})
(1, 2, 3, (4,), {})
(1, 2, 3, (4, 5, 6), {})
(1, 2, 3, (4,), {'c': 6})
(1, 2, 3, (4, 5, 6), {'a': 1, 'b': 2, 'c': 3})
Lambda函数,及Lambda表达式,是一个匿名函数(不存在函数名的函数),lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象
语法:lambda 参数:表达式(block)
参数:可选,通常以逗号风格的变量表达式形式,也就是位置参数
表达式:不能包含循环,return,elif,可以包含if
L=lambda x:x*x
print(L(5))
25
判断一个数和10的大小
#lambda函数
L=lambda x:'x>10' if x>10 else 'x<10'
print(L(11))
#函数实现
def L(x):
if x>10:
return 'x>10'
else:
return 'x<10'
print(L(5))
map()是python的内置函数,他接受一个函数和一个可迭代对象,并且通过函数依次作用在可迭代对象的每个元素上,得到一个新的对象。
1、对一个列表中的元素进行平方
1、普通函数写法
list1=[1,3,5,7,9]
list2=[]
def a(x):
return x*x
for i in list1:
list2.append(a(i))
print(list2)
2、使用map()函数后
def funcpf1(x):
return x*x
a=map(funcpf,[1,3,5,7,9])
print(list(a))
3、使用lambda后
L=map(lambda x:x*x,[1,3,5,7,9])
print(list(L))
2、两个列表a = [1,2,3], b = [4,5,6] 把两者中每个元素的数值相加在一起c=[5,7,9],你该如何处理?
a=[1,2,3]
b=[4,5,6]
c=map(lambda x,y:x+y,a,b)
print(list(c))
//执行结果
[5, 7, 9]
注意:即使lambda简洁好用,但是不建议大家滥用。用多了会导致程序可读性很差。
1.lambda 函数比较轻便,即用即删除,很适合需要完成一项功能,但是此功能只在此一处使用, 连名字都很随意的情况下;
2.匿名函数,一般用来给 filter, map 返样的函数式编程服务;
3.作为回调函数,传递给某些应用,比如消息处理
4.不用考虑命名冲突问题