作者: renho

  • async for

    import asyncio
    import time
    
    print("\n\n=== 2. 异步模式开始 (请注意观察心跳) ===")
    
    # 这是一个背景任务,模拟 UI 动画或者心跳检测
    async def background_heartbeat():
        while True:
            print("   💓 (背景任务) 咚-咚-咚... 程序还活着!")
            await asyncio.sleep(0.3) # 每0.3秒跳动一次
    
    # 异步生成器
    async def async_stream():
        for i in range(3):
            print(f"🔄 (生成器内部) 正在用力下载第 {i+1} 个包...")
            # 【挂起】告诉 Python:我要等1秒,这期间你去处理那个“心跳”任务吧
            await asyncio.sleep(1) 
            yield f"📦 包 {i+1} 下载完成"
    
    async def main():
        # 1. 启动背景心跳任务
        task = asyncio.create_task(background_heartbeat())
    
        start_time = time.time()
    
        # 2. 开始 Async For 循环
        # 关键点:每次在这里“等”数据的时候,上面的 background_heartbeat 就会插队运行
        async for data in async_stream():
            print(f"✅ 主程序收到: {data}\n")
    
        # 停止心跳任务
        task.cancel()
        print(f"=== 异步模式结束,总耗时: {time.time() - start_time:.2f}秒 ===")
    
    # 运行
    asyncio.run(main())
    
  • python基础

    集合

    # set
    
    s1 = {1, 2, 3, 4}
    print(type(s1))
    print(s1)
    s1.add(5)
    s1.add(6)
    print(s1)
    s2 = {5, 6, 7, 8}
    s3 = s1 | s2
    print(s3)
    s3.remove(3)
    s3.discard(4)
    print(s3)
    
    s4 = {s for s in range(10, 20)}
    print(s4)
    
    
    t0 = (1, 2, 3, 4)
    print(t0)
    
    
    m = {
        "a": "a",
        "b": "",
        "c": None
    }
    
    print(m.get("a"))
    print(m.get("b"))
    print(m.get("c"))
    print(m.get("d"))
    
    
    print("--------")
    print(m.get("a", "aa"))
    print(m.get("b", "bb"))
    print(m.get("c", "cc"))
    print(m.get("d", "dd"))
    print("--------")
    print(m.get("a") if m.get("a") else "aa")
    print(m.get("b") if m.get("b") else "bb")
    print(m.get("c") if m.get("c") else "cc")
    print(m.get("d") if m.get("d") else "dd")
    

    内置函数

    ################## zip
    list0 = ["a", "b", "c"]
    list1 = [1, 2, 3]
    list2 = ["A", "B", "C"]
    
    result = zip(list0, list1, list2)
    print(str(result))
    # for item in result:
    #     print(item)
    list3 = list(result)
    print(list3)
    print('----------')
    print(locals())
    print(globals())
    
    
    ################## sorted
    list0 = ["a", "abb", "adddd", "accc"]
    result = sorted(list0, key=lambda k: len(k))
    print(result)
    
    ################## filter
    result = filter(lambda s: "adddd" == s, list0)
    print(list(result))
    
    ################## map
    result = map(lambda i : i + i, list0)
    print(list(result))
    
    ################## reduce
    s0 = {0, 1, 2, 3}
    s1 = {1, 2, 3}
    from functools import reduce
    result = reduce(lambda a, b: a | b, [s0, s1])
    
    print('67' in '67@1@dhxy')
    
    ################## zip
    list0 = ["a", "b", "c"]
    list1 = [1, 2, 3]
    list2 = ["A", "B", "C"]
    
    result = zip(list0, list1, list2)
    print(str(result))
    # for item in result:
    #     print(item)
    list3 = list(result)
    print(list3)
    print('----------')
    print(locals())
    print(globals())
    
    
    ################## sorted
    list0 = ["a", "abb", "adddd", "accc"]
    result = sorted(list0, key=lambda k: len(k))
    print(result)
    
    ################## filter
    result = filter(lambda s: "adddd" == s, list0)
    print(list(result))
    
    ################## map
    result = map(lambda i : i + i, list0)
    print(list(result))
    
    ################## reduce
    s0 = {0, 1, 2, 3}
    s1 = {1, 2, 3}
    from functools import reduce
    result = reduce(lambda a, b: a | b, [s0, s1])
    print(result)