python基础三_01_函数编程

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简洁好用,但是不建议大家滥用。用多了,程序可读性很差。

6.使用lambda好处

(1).lambda 函数比较轻便,即用即删除,很适合需要完成一项功能,但是此功能只在此一处使用, 连名字都很随意的情况下;
(2).匿名函数,一般用来给 filter, map 返样的函数式编程服务;
(3).作为回调函数,传递给某些应用,比如消息处理
(4).不用考虑命名冲突问题

你可能感兴趣的:(python基础)