Loading...
墨滴

xiaoqiangclub

2021/05/30  阅读:62  主题:红绯

【网络教程】Python中使用列表生成式生成多个lambda函数遇到的坑!(已解决)


问题描述:

  • 我们很多时候需要用到匿名函数lambda来进行传参等操作,有时候还可能会使用列表生成式来生成多个匿名函数,但是这里就存在这一个坑!如下
#!/usr/bin/env python
# -*- encoding: utf-8 -*-                            
# @Author     : xiao qiang
# @WeChat     : xiaoqiangclub                              
# @Software   : PyCharm      
# @File       : test002.py
# @Time       : 2021/5/30 19:48
from requests_html import AsyncHTMLSession

aSession = AsyncHTMLSession()


async def test(tt, yy):
    r = await aSession.get('https://www.baidu.com/')
    await r.html.arender()
    print('-{}-{}-'.format(tt, yy))
    return r


test_dict = {
    '1''a',
    '2''b',
    '3''c'
}

tasks = [lambda: test(i, y) for i, y in test_dict.items()]

ret = aSession.run(*tasks)
print(ret)

解决方案:

  • 我们需要给lambda函数指定(绑定)参数!如下修改上述代码
#!/usr/bin/env python
# -*- encoding: utf-8 -*-                            
# @Author     : xiao qiang
# @WeChat     : xiaoqiangclub                              
# @Software   : PyCharm      
# @File       : test002.py
# @Time       : 2021/5/30 19:48
from requests_html import AsyncHTMLSession

aSession = AsyncHTMLSession()


async def test(tt, yy):
    r = await aSession.get('https://www.baidu.com/')
    await r.html.arender()
    print('-{}-{}-'.format(tt, yy))
    return r


test_dict = {
    '1''a',
    '2''b',
    '3''c'
}

# tasks = [lambda: test(i, y) for i, y in test_dict.items()]

tasks = [lambda i=i, y=y: test(i, y) for i, y in test_dict.items()]  # 给 lambda函数绑定参数

ret = aSession.run(*tasks)
print(ret)

  • 运行结果 在这里插入图片描述
  • OK,问题解决!

xiaoqiangclub

2021/05/30  阅读:62  主题:红绯

作者介绍

xiaoqiangclub