Python基础知识学习-第6天

12-函数与Lambda表达式

1 在定义参数的时候可以在参数前加上一个星号,表明这里面可以接受任意数量的序列(相当于一个元祖)

def avg(*scores):
    return sum(scores) / len(scores)

result = avg(98, 88, 76, 66, 5)
print(result)
>>>66.6

如果是双星号,则可以接受一个字典

def display(**employee):
    print(employee)

display(name = 'petter', age = 20, job = 'dev')
>>>{'name': 'petter', 'age': 20, 'job': 'dev'}

如果直接传入一个创建好的字典,则会报错.可以在变量名前加上两个星号.

emp = {'name' : 'peter', 'age' : 20, 'job' : 'dev'}
def display(**employee):
    print(employee)

display(**emp)
>>>{'name': 'peter', 'age': 20, 'job': 'dev'}

2 lambda函数
lambda函数也叫匿名函数,即,函数没有具体的名称。先看一个例子:

g = lambda x : x + 1
print(g(4))
>>>5

相当于

def g(x):
    return x + 1

print(g(4))
>>>5

语法–lambda 参数1,…:函数体

13-函数应用与工具

1 给定一个列表,找出其中的偶数。

# 1.使用循环
l = list(range(1, 21))
res = []
for n in l:
    if n % 2 == 0:
        res.append(n)
print(res)
>>>[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
# 2.使用推导
l = list(range(1, 21))
res = [x for x in l if x % 2 == 0]
print(res)
>>>[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
l = list(range(1, 21))
def even_number(x):
    return x % 2 == 0
res = list(filter(even_number, l))
print(res)
>>>[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

如果不将filter之后的对象转化为list列表的话,无法直接打印。此时可以:

l = list(range(1, 21))
def even_number(x):
    return x % 2 == 0
res = filter(even_number, l)
for i in res:
    print(i, end = ' ')
>>>2 4 6 8 10 12 14 16 18 20 
l = list(range(1, 21))
res = list(filter(lambda n : n % 2 == 0, l))
print(res)
>>>[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

2 用字典模拟switch功能

def hello_chinese(name):
    print('你好,', name)

def hello_english(name):
    print('hello,', name)

def hello_japanese(name):
    print('こんにちは', name)

operation = {
    'c':hello_chinese,
    'e':hello_english,
    'j':hello_japanese,
    'r':lambda name : print('Здравствыйте,', name)
}
while True:
    name = input('请输入名字:')
    if name == 'stop':
        break
    language = input('请输入语言:\n c ==> 中文\n e ==> 英文\n j ==> 日文\n r ==> 俄文\n')
    operation.get(language, hello_chinese)(name)

将函数名当成参数传递:

def hello_chinese(name):
    print('你好,', name)

def hello_english(name):
    print('hello,', name)

def hello_japanese(name):
    print('こんにちは', name)

def hello(action, name):
    action(name)

hello(hello_chinese, 'tom')
>>>你好, tom
发布了23 篇原创文章 · 获赞 0 · 访问量 416

猜你喜欢

转载自blog.csdn.net/Mr_Wang0120/article/details/104113694