python基础-12函数与lambda表达式13函数应用与工具

函数与lambda表达式

1、参数传递

def hello(name):
    print('hello',name)
hello('tom')
输出结果:
hello tom

数字相加

def add(x,y):
    return x+y
result=add(5,3)
print(result)
结果:
8

字符相加

def add(x,y):
    return x+y
result=add('abc','xyz')
print(result)
结果;
abcxyz

2、参数匹配

def func(a,b,c):
    print(a,b,c)
func(1,2,3)
func('a','b','c')
func([1,2,3],(5,6),{'a':1,'b':2})
结果:
1 2 3
a b c
[1, 2, 3] (5, 6) {'a': 1, 'b': 2}

(1)默认情况下位置匹配

def func(a,b,c):
    print(a,b,c)
func(1,2,3)
结果:
1 2 3

(2)关键字匹配

def func(a,b,c):
    print(a,b,c)
func(c=1,a=2,b=3)
结果:
2 3 1

(3)关键值

def func(a,b=2,c=3):
    print(a,b,c)
func(1)
结果:
1 2 3

def func(a,b=2,c=3):
    print(a,b,c)
func(1,c=5)
结果:
1 2 5

(4)求均值
两数均值

def avg(s1,s2):
    return(s1+s2)/2
result=avg(98.2,88.4)
print(result)
结果:
93.30000000000001

n数均值
*args任意数量参数。解包的时候再加一个 星号

def avg(*s):
    return sum(s)/len(s)
result=avg(98.2,88.4,92,70)
print(result)
结果:
87.15
def avg(*s):
    return sum(s)/len(s)
s=(98.2,88.4,92,70)
result=avg(*s)
print(result)
结果:
87.15

(5)

def display_emp(name):
    print(name)
display_emp('TOM')
结果:
TOM
def display_emp(name,age,job):
    print(name,age,job)
display_emp('TOM',22,'dev')
结果:
TOM 22 dev
def display(**emp):
    print(emp)
display(name='TOM',age=22,job='dev')
结果:
{'name': 'TOM', 'age': 22, 'job': 'dev'}

声明方式
d1={‘name’: ‘TOM’, ‘age’: 22, ‘job’: ‘dev’}
d2=dict(name=‘TOM’,age=22,job=‘dev’)

emp={
    'name':'TOM',
    'age':22,
    'job':'dev'
}
def display(**emp):
    print(emp)
display(**emp)
结果:
{'name': 'TOM', 'age': 22, 'job': 'dev'}

lambda表达式

def hello(name):
    print(name)
f=lambda name:print(name)
f('tom')
结果:
tom
f2=lambda x,y:x+y
print(f2(3,5))
结果:
8
def hello_chinese(name):
    print('你好:',name)
def hello_english(name):
    print('Hello:',name)
while True:
    name=input('请输入你的姓名:\n')
    if name=='stop':
        break
    language=input('请选择语言:\n c->中文版\n e->英文版\n')
    if language=='c':
        hello_chinese(name)
    if language=='e':
        hello_english(name)
结果:
请输入你的姓名:
tom
请选择语言:
 c->中文版
 e->英文版
e
Hello: tom
请输入你的姓名:
莉莉
请选择语言:
 c->中文版
 e->英文版
c
你好: 莉莉
请输入你的姓名:
stop

改用lambda

while True:
    name=input('请输入你的姓名:\n')
    if name=='stop':
        break
    language=input('请选择语言:\n c->中文版\n e->英文版\n j->日文版\n')
    if language=='c':
        action=hello_chinese(name)
    elif language=='e':
        action=hello_english(name)
    elif language=='j':
        action=lambda name:print('こんにちは',name)
    action(name)
结束:
请输入你的姓名:
小泉
请选择语言:
 c->中文版
 e->英文版
 j->日文版
j
こんにちは 小泉
f=lambda name:print('hello',name)
f('TOM')
输出结果:
hello TOM
f=lambda name,age:print('hello {},age:{}'.format(name,age))
f('TOM',20)
输出结果:
hello TOM,age:20
def hello_chinese(name):
     print('你好:',name)
def hello_english(name):
    print('Hello:',name)
def hello_japanese(name):
    print('こんにちは', name)
op={
    'e':hello_english,
    'c':hello_chinese,
    'j':hello_japanese,
    'r':lambda name:print('привет',name)
}
while True:
    name = input('请输入你的姓名:\n')
    if name=='stop':
        break
    language=input('请选择语言: \n c->中文版\n e->英文版\n j->日文版\n r->俄文版\n')
    op.get(language)(name)
输出结果:
请输入你的姓名:
dd
请选择语言: 
 c->中文版
 e->英文版
 j->日文版
 r->俄文版
r
привет dd

求偶数

l=list(range(1,21))
result=[]
#1、使用循环
for n in l:
   if n%2==0:
     result.append(n)
#2、使用推导
result=[x for x in l if x%2==0]
print(result)
l=list(range(1,21))
result=[]
#1、使用循环
for n in l:
  result.append(n+5)
#2、使用推导
result=[x+5 for x in l]
print(result)

1-21,每数加5
3种方法实现

l=list(range(1,21))
result=[]
def add_num(x):
    return x+5
#1、使用循环
for n in l:
    result.append(n+5)
#2、使用推导
result=[x+5 for x in l]
#3、map()
result=list(map(add_num,l))
print(result)

1-11求偶数
filter()

l=list(range(1,11))
def even_num(x):
    return x%2==0
# 1、结果转化filter()
res=list(filter(even_num,l))
# 1、结果转化lambda()
res=list(lambda n:n%2==0,l)
print(res)
# 2、循环
for n in res:
    print(n,'')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值