python基础三_01_函数编程
导读:
本文主要记录自己学习python3基础中函数编程的要点知识和例子;仅供自己梳理
一、python函数简介
1.函数的定义
函数:是一个可以被重复调用的带有一个入口和一个出口的固定的程序段.
2.函数的优点
a.减少冗余代码
b.代码结构清晰
c.保持代码的一致性
3.定义一个函数
(1).函数名一般以小驼峰命名,见名知意,其余要求与变量的命名一样
(2).函数名后面的()叫做参照括号
def 函数名(形参):
代码块
return
(3).举例
def func_test1():
print('大家晚上好')
二、如何调用函数
1.函数的调用
函数的调用方法:函数名(实参)
(1).函数没有调用的话不会执行
(2).参照括号内若定义了形参,那么调用时要传对应的实参
(3).定义函数时参照括号内定义的参数 我们称为 形参
(4).在调用函数的时候我们传递值 我们称为 实参
# 定义函数:func_test2()
def func_test2(name):
str2 = name + ' 欧力给!'
# 返回函数处理结果:str2
return str2
# 调用函数:func_test2(),并传入实参:name='YDXQBJL'
print(func_test2('YDXQBJL'))
(5)可以发现其实参照括号是函数的入口,return是函数的出口。我们还可以定义多个形参。
# 定义
def func_test3(name,age):
str3 = name + '的年龄是:' + age
return str3
# 调用
res = func_test3('爷的心情悲寂寥','18')
# 打印结果
print(res)
三、函数参数的划分
按照参数类型划分:位置参数,关键字参数,默认参数,参数组
1.位置参数
位置传参是我们在传参的时候,实参传递的顺序按照形参定义的顺序迕行传递的传参方式
def func1(name,city):
str1 = 'I am {},I come from {}'.format(name,city)
return str1
res1 = func1('ydxqbjl','beijing')
print(res1)
res2 = func1('beijing','ydxqbjl')
print(res2)
2.关键字参数
关键字传参是我们在传参的时候,以形参等于实参的形式忽略形参定义的顺序迕行传参的传参方式 因为 Python 解释器能够用参数名匹配参数值
def func2(name,city):
str2 = 'I am {},I come from {}'.format(name,city)
return str2
res1 = func2(name='ydxqbjl',city='beijing')
print(res1)
res2 = func2(city='beijing',name='ydxqbjl')
print(res2)
3.默认参数(缺省参数)
默认值传参是在我们定义参数时候,我们给形参一个默认值,在我们调用函数的时候,如果没有给有默认值的形参传参,会自动采用默认值。
def func3(name,city = 'china'):
str3 = 'I am {},I come from {}'.format(name,city)
return str3
res3 = func3(name='ydxqbjl')
print(res3)
4.参数组(不定长参数):提高容错率
处理比当初声明时更多的参数,会将传入的参数变成元组(*args)或者字典(**kwargs),声明的时候不用命名
(1).元组参数组 :*args
通过给形参前面添加 * 使参数变成一个元组,所有传递的参数变成元组的元素
def func4_1(*args):
print(args)
func4_1()
func4_1(1,2)
func4_1(1,2,3,4,'asfd')
(2).字典参数组 :**kwargs
通过给形参前面添加 ** 使参数变成一个字典,所有传递的参数变成字典的键值对,返里传参要求键等 于值的形式
def func4_2(**kwargs):
print(kwargs)
func4_2()
func4_2(a = 1)
func4_2(a=1,b=2,c=3)
5.实际中我们一般这样定义一个函数
def funcName(e,f,g=2,*args,**kwargs):
a = args
b = kwargs
re = e,f,g,a,b
return re
response1 = funcName(1,2)
print(response1)
response2 = funcName(1,2,3,a=1)
print(response2)
response3 = funcName(1,2,3,4,a=1)
print(response3)
response4 = funcName(1,2,3,4,5,6,7,a=1,b=2,c=3)
print(response4)
四、匿名函数lambda
1.lambda函数简介
Lambda函数,即Lambda 表达式,是一个匿名函数(不存在函数名的函数), Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象。
2.使用
语法:lambda 参数:表达式(block)
参数:可选,通常以逗号分隔的变量表达式形式,也就是位置参数
表达式:不能包含循环,return,elif ,可以包含if.
L = lambda x:x*x
print(L(5))
25
3.例子
判断一个数和10的大小
L = lambda x : 'x>10' if x >10 else 'x<10'
print(L(5))
如果用函数实现的话:
def L(x):
if x >10:
return 'x>10'
else:
return 'x<10'
print(L(11))
4.map()
map () 是python的内置函数,它接受一个函数和一个可迭代对象,并且通过函数依次作用在可迭代对象的每个元素上,得到一个新的对象。
5.练习题:
1.对一个列表中的元素进行平方
普通函数写法:
lista = [1,2,3,4]
listb = []
def funcpf(x):
return x*x
for i in lista:
listb.append(funcpf(i))
print(listb)
使用map()函数后:
def funcpf(x):
return x*x
res1 = map(funcpf,[1,2,3,4])
print(list(res1))
使用lambda后:
res = map(lambda x:x*x,[1,2,3,4])
print(list(res))
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))
注意:即使lambda简洁好用,但是不建议大家滥用。用多了,程序可读性很差。