Python3.6新增了一種f-字符串格式化
格式化的字符串文字前綴為’f’和str.format()相似。它們包含由花括號包圍的替換區域。替換字段是表達式或變量,在運行時進行評估,然后使用format()協議進行格式化。以 f 開頭,包含的{}表達式在程序運行時會被表達式的值代替。
import asyncio
# Python 3.5開始引入了新的語法async和await
# 把@asyncio.coroutine替換為async
async def countdown(name,num):
while num > 0:
print(f'countdown[{name}]:{num}')
await asyncio.sleep(1) # 異步調用asyncio.sleep(1):
num -= 1
# 把yield from替換為await
def main():
loop = asyncio.get_event_loop() # 獲取EventLoop
tasks =[countdown("O", 3), countdown("N", 5)]
loop.run_until_complete(asyncio.wait(tasks)) # 執行coroutine
loop.close
if __name__ == '__main__':
main()

運行結果

print(f'{name}')其中 { } 相當於占位符,程序運行時花括號部分會變成相應的變量值,如果print('{name}')中 f 被去掉,就是普通的打印功能,原封不動地打印字符串 {name}
asyncio異步相關知識點
Python 3.5開始引入了新的語法async和await
- 把@asyncio.coroutine替換為async
- 把yield from替換為await
__name__ == '__main__'
__name__ == '__main__'用雙下划線開頭且結尾的變量,在 Python 中被稱為內置變量
dir(__builtins__)可查看 Python 全部內置變量和內置函數

__name__ 是當前模塊名,當模塊被直接運行時模塊名為__main__。意思是,當模塊被直接運行時,下面的代碼塊將被運行,當模塊是被導入時,代碼塊不被運行
Python3.4以及早期版本,需要用早期的寫法
import asyncio
@asyncio.coroutine
def countdown(name, num):
while num > 0:
print(f'countdown[{name}]:{num}')
yield from asyncio.sleep(1)
num -= 1
def main():
loop = asyncio.get_event_loop()
tasks =[countdown("A", 3), countdown("B", 5)]
loop.run_until_complete(asyncio.wait(tasks))
loop.close
if __name__ == '__main__':
main()

運行結果

