函数与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,'')