python:参数与Lambda表达式

python:参数与Lambda表达式

在这里插入图片描述

参数类型

位置参数

def location(a, b)
    print(a + b)

location(3, 9)
"调用函数时,按顺序传递参数,3 传给 a,9 传给 b"

关键字参数

def location(a, b)
    print(a + b)

location(b = 3, a = 9)
"调用函数时,按关键字传递参数,3 传给 b,9 传给 a"

默认参数

# 正确的默认参数定义方式--> 位置参数在前,默认参数在后
def print_hello(name, sex=1):
    ....

# 错误的定义方式
def print_hello(sex=1, name):
    ....

# 调用时不传sex的值,则使用默认值1
print_hello('tanggu')

# 调用时传入sex的值,并指定为2
print_hello('tanggu', 2)

可变参数
一般在给多值参数命名时,习惯使用以下两个名字
*args — 存放 元组 参数
**kwargs — 存放 字典 参数,(kw 即 keyword,kwargs 即 键值对参数)

def demo(num, *args, **kwargs):

    print(num)
    print(args)
    print(kwargs)

demo(1, 2, 3, 4, 5, name="小明", age=18, gender=True)

输出:
1
(2, 3, 4, 5)
{'name': '小明', 'age': 18, 'gender': True}

拆包
拆包主要用于元组和字典参数的传递。

def demo(*args, **kwargs):

    print(args)
    print(kwargs)

gl_nums = (1, 2, 3)
gl_xiaoming = {"name": "小明", "age": 18}

"变量名前必须要加 * 号,否则不能无法正常拆包"

"错误演示(不加 * 号):"
demo(gl_nums, gl_xiaoming)
输出:
((1, 2, 3), {'name': '小明', 'age': 18})
{}

"正确演示(加 * 号):"
demo(*gl_nums, **gl_xiaoming)
输出:
(1, 2, 3)
{'name': '小明', 'age': 18}

高级函数用法

filter()
filter()函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,可以通过list()转化为列表或者通过for循环取值。

filter()函数接收两个参数,第一个为函数,第二个为可迭代对象。返回序列中能使函数为真的元素的迭代器对象;如果函数为None,则返回序列中值为True的元素。

res = filter(lambda x: x.startswith('a'), ['abc', 'adsa', 'Def', 'Abd', ])
print(list(res))  # ['abc', 'adsa']

map()
map(function, iterable, …),将function应用于iterable的每一个元素,结果以列表的形式返回

>>> print map(lambda x: x % 2, range(7))
[0, 1, 0, 1, 0, 1, 0]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值