Python基础知识(五)

Python基础知识(五)

一、函数

参数的匹配

  形参有几个就要传递几个实参

形式一:位置匹配

 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})

运行结果:在这里插入图片描述
形式二:关键字匹配

def func(a,b,c):
    print(a,b,c)


func(c = 1,a = 2,b = 3)

运行结果:
在这里插入图片描述
形式三:默认值(调用时省略传值)

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


func(1)

运行结果:
在这里插入图片描述形式四、args任意数量参数,(python可以用元组进行参数传递:形参前面加,表示可以传递任意个数的序列。)

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

result = avg(98.2,88.1,70,65)

print(result)

运行结果:
在这里插入图片描述
注:传递一个tuple时

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


scores = (88,89,90)

result = avg(*scores)

print(result)

运行结果:
在这里插入图片描述
形式五:**kwargs可以传递以键值对的形式传递多个值

emp = {
    'name':'Tom',
    'age':22,
    'job':'dev'
}


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

d = {'name':'Jerry','age':22}
d2 = dict(name = 'Mike',age = 23,job = 'dev')
display(name = 'tom',age = 22,job = 'dev',department = 'development')
display(**emp)

运行结果:
在这里插入图片描述

二、Lambda表达式(定义匿名函数)

 基本格式:lambda 参数1,..:函数

原始代码:

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)
    elif language == 'e':
        hello_english(name)

运行结果:
在这里插入图片描述

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 j=> 日文版\n ')
    if language == 'c':
        hello_chinese(name)
    elif language == 'e':
        hello_english(name)
    elif language == 'j':
        (lambda name:print('にほんご',name))(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 j=> 日文版\n ')


    if language == 'c':
        action = hello_chinese
    elif language == 'e':
        action = hello_english
    elif language == 'j':
        action = (lambda name:print('にほんご',name))

    action(name)

运行结果:
在这里插入图片描述
原始代码:

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

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


hello = hello_english

hello('tom')

运行结果:
在这里插入图片描述
改进:

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

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


hello = lambda name:print('にほんご',name)

hello('tom')

运行结果:
在这里插入图片描述

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


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


def hello_japanese(name):
    print('にほんご',name)


while True:
    name = input('请输入姓名:\n')
    if name == 'stop':
        break
    language = input('请选择语言版本:\n c=>中文版\n e => 英文版\n j => 日本版\n')

    if language =='c':
        hello_chinese(name)
    elif language == 'e':
        hello_english(name)
    elif language =='j':
        hello_japanese(name)

运行结果:
在这里插入图片描述
加入俄文版:

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


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


def hello_japanese(name):
  print('にほんご',name)


while True:
  name = input('请输入姓名:\n')
  if name == 'stop':
      break
  language = input('请选择语言版本:\n c=>中文版\n e => 英文版\n j => 日本版\n r => 俄文版\n')

  f = lambda name:print('привет',name)
  
  if language =='c':
      hello_chinese(name)
  elif language == 'e':
      hello_english(name)
  elif language =='j':
      hello_japanese(name)
  elif language == 'r':
      f(name)

运行结果:

在这里插入图片描述
改进:用字典表代替if循环结构:

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


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


def hello_japanese(name):
    print('にほんご',name)

emp = {'name':'tom','age':22}
operation = {
    'c':hello_chinese,
    'e':hello_english,
    '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')

    operation.get(language)(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')
hello(hello_japanese,'Tom')
hello(lambda name:print('привет',name),'Tom')

运行结果:
在这里插入图片描述

三、函数的高级工具:

1、map(函数,可迭代对象)

返回的结果不是一个迭代对象需要用list转换过来

举例:对列表中的每个值进行操作:

l = list(range(1,21))


res = []

# 1、使用循环

for x in l:
    res.append(x + 5)

# 2、使用推导
res = [x + 5 for x in l]

print(res)

运行结果:
在这里插入图片描述

使用map
l = list(range(1,21))


res = []

def add_number(x):
    return x+5

res = list(map(add_number,l))

print(res)

运行结果:
在这里插入图片描述

2、filter(函数,可迭代对象):从后面多个符合条件的元素找出来。

l = list(range(1,11))

# def even_number(x):
#     return x%2 == 0

# res = filter(even_number,l)
res = filter(lambda n :n % 2 ==0,l)
for n in res:
    print(n,end = ' ')

运行结果:
在这里插入图片描述

l = list(range(1,11))
res = [x for x in l if x%2==0]
for n in res:
    print(n,end = ' ')

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值