Last Updated on 2021-04-05 by Clay
最近在學習各方大神在 Python 當中實做的各種深度學習模型,剛巧看到了一個不熟悉的模組:Fire。
當然,最早我是不知道 Fire 是一個什麼樣的模組,只覺得名字好怪。一查之下,挖賽不得了,原來這竟然是 Google 於 2017 年在 Github 上開源的套件。
那既然是 Google 開源的,那這個套件自然是大有道理的(<==腦粉發言),Fire 套件最大的好處就是可以『直接將 Python 變成命令列可以直接輸入參數』。
這是什麼意思呢?
不知道大家對於 argparse 這個套件熟不熟?或者是對 sys.argv 熟不熟? 以上兩種都是讓我們可以在 Command Line 執行 Python 檔的時候輸入參數的套件。若是還不熟、想要了解運作方法,也許可以考慮參考我之前寫過的《使用 Python 自帶的 argparse 套件來調用終端機給予參數》。
基本上,從 Command Line 給予參數大概就像這樣:
Python3 "file.py" -arg arg
而 argparse 需要事先設定好我們變數的數量、以及需要的變數名稱;而這一切,只要使用 Fire 模組,只要你寫的 Function、Class 夠清楚,你可以在不需要事先設定參數的情況下自由輸入參數。
Fire 使用方法
說了那麼多,其實不直接 Demo 一次恐怕很難明白,那麼首先來看段簡單的 Sample Code 吧。
如果是第一次使用,別忘了使用以下指令安裝:
pip3 install fire
安裝好之後,我們來定義兩個 function。
# -*- coding: utf-8 -*- import fire def printHelloWorld(): return 'Hello World!' def name(name): return 'your name is {}.'.format(name) if __name__ == '__main__': fire.Fire()
Output:
NAME
fire_test.py
SYNOPSIS
fire_test.py GROUP | COMMAND
GROUPS
GROUP is one of the following:
fire
The Python Fire module.
COMMANDS
COMMAND is one of the following:
printHelloWorld
name
在程式的最底下,也就是程式的進入點寫下 "fire.Fire()" 即可順利地啟用 Fire 這個模組。
fire_test.py 是我檔案的名字,COMMANDS 底下為我們定義的 function,也是我們等下可以輸入的變數。
好了,執行過一次之後我們便會發現:欸?不對啊,我們的程式沒有執行欸?
這是正常的,我們想要執行 Fire() 啟用的 Python 檔,非得加入要執行的參數不可。
譬如說這樣:
python3 fire_test.py printHelloWorld
Output:
Hello World!
如果我們想要加參數給我們要執行的 function,直接加在 function 後面即可:
python3 fire_test.py name "Clay"
Output:
your name is Clay.
如何,"Clay" 這個名字是不是被傳入 function "name()" 裡頭了呢?
以上,就是簡單的 Python 當中 Fire 的使用方法。Fire 可以讓我們在不用主動寫輸入參數的情況下,直接使用終端機來給予程式參數。
相信熟悉的話,想必對於開發程式有很大的幫助。