我在接收不同类型的参数文件的功能(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