我在接收不同類型的參數文件的功能(INT,字符串,字典,列表...)鑄造輸入參數正確類型
通常我調用此函數從另一個,通過正確的參數,但我想也能夠從控制檯調用它(用於測試目的)
問題是輸入參數存儲爲字符串,所以我不能直接將它們傳遞給函數。
有沒有辦法自動將參數從控制檯傳遞給保持正確格式的函數?
import sys
def myfunction(mystring, myint, mydict, mylist):
# check that types are correct
assert type(mystring) is str
assert type(myint) is int
assert type(mydict) is dict
assert type(mylist) is list
# print input parameters
print mystring
print myint
print mydict
print mylist
def main(args):
print args
myfunction(*args) # pass the parameters to the function
if __name__ == '__main__':
main(sys.argv[1:]) # discard 1st element which is the filename
叫我從功能控制檯我只是做:
python myfile.py "hello" 5 {'age':30} [1,2,3,4]
第一assert
succeds,因爲它需要一個字符串,但由於它需要int第二個失敗。
主函數print args
返回['hello', '5', '{age:30}', '[1,2,3,4]']
(因此參數已被正確解析,但它們存儲爲字符串)。
我只需要將它們轉換爲正確的格式。
任何想法?
也許,您可以使用[argparse](https://docs.python.org/3/ library/argparse.html)庫 – Wolkodav