'''
使用yield完成多工
'''# import time
# def task1():
# while true:
# print('--1--')
# time.sleep(0.1)
# yield
# def task2():
# while true:
# print('--2--')
# time.sleep(0.1)
# yield
# def main():
# t1 = task1()
# t2 = task2()
# while true:
# next(t1)
# next(t2)##
# if __name__ == '__main__':
# main()
'''yield from介紹
python3 新加了yield from語法
'''from itertools import chain
# lis = [1,2,3]
# dic =
# chain 相當於實現了3個for迴圈
# 返回乙個物件# 加list 強制轉換後結果:[1, 2, 3, 'name', 'age', 5, 6, 7, 8, 9]
# print(list(chain(lis,dic,range(5,10))))
# *args,**kwargs 不定長引數
# def my_chain(*args,**kwargs):
# for my_iterable in args:
# # for value in my_iterable:
# # yield value
# yield from my_iterable##
# for value in my_chain(lis,dic,range(5,10)):
# print(value)
##-------------
# lis = [1,2,3]
## def generator_1(lis):
# yield lis##
# def generator_2(lis):
# yield from lis##
# for i in generator_1(lis):
# print(i)
## for i in generator_2(lis):
# print(i)
'''yield from 舉例'''
# 子生成器
def generator_1():
total = 0
while true:
x = yield
print('加',x)
if not x: # if not none: true
break
total += x
return total
# 委託生成器
def generator_2():
while true:
# 建立呼叫方和子生成器的通道
total = yield from generator_1() # 子生成器
print('加和總數是:',total)
# 呼叫方
def main():
# g1 = generator_1()
# g1.send(none)
# g1.send(2)
# g1.send(3)
# g1.send(none)
g2 = generator_2()
g2.send(none)
g2.send(2)
g2.send(3)
g2.send(none)
if __name__ == '__main__':
main()
執行結果:
```加 2
加 3加 none
加和總數是: 5
yield實現多工演示
import time deftask1 任務1函式 i 0while true print in task1 time.sleep 1 主程式中通過next 拿到yield後面的值 生成器物件.send 傳送的資料 這時傳送的資料傳遞到yield,當做yield的返回值 result yield ...
利用 Django admin 完成更多工
liza daly,軟體工程師和所有者,threepress consulting inc.2009 年 6 月 22 日 django 提供的內建管理控制台是該產品最大的賣點之一。假如您要定製外觀和模型字段以外的東西,應該怎麼辦呢?檢視本文了解如何在不修改源程式的情況下擴充套件現有管理應用程式。d...
利用 Django admin 完成更多工
利用 django admin 完成更多工 定製符合您需求的強大應用程式的三種方法 liza daly,軟體工程師和所有者,threepress consulting inc.簡介 django 提供的內建管理控制台是該產品最大的賣點之一。假如您要定製外觀和模型字段以外的東西,應該怎麼辦呢?檢視本文...