将可选的控制台参数传递给 python 中的函数
Passing optional console arguments to function in python
我正在编写一个从控制台获取三个可选参数的函数。
def FizzBuzz(target_number=100, fizz=3, buzz=5):
for i in range(target_number):
output = "" #This is what the function will return
if i % fizz == 0: #If a multiple of Fizz, add "Fizz" to output
output += "Fizz"
if i % buzz == 0: #If a multiple of Buzz, add "Buzz" to output
output += "Buzz"
if output == "": #If neither Fizz nor Buzz is in the output, print number instead
output += str(i)
print(output)
我知道了运行sys.argv:
if len(sys.argv) == 2:
FizzBuzz(int(sys.argv[1]))
elif len(sys.argv) == 3:
FizzBuzz(int(sys.argv[1]), int(sys.argv[2]))
else:
FizzBuzz(int(sys.argv[1]), int(sys.argv[2]), int(sys.argv[3]))
这种方法既乏味又无效。有更简单的方法吗?
查看 argparse
模块:
import argparse
parser = argparse.ArgumentParser(description='FizzBuzz')
parser.add_argument('--target', type=int, default=100,
help='Target number (default: 100)')
parser.add_argument('--fizz', type=int, default=3,
help="Multiples of this argument will output 'Fizz' (default: 3)")
parser.add_argument('--buzz', type=int, default=5,
help="Multiples of this argument will output 'Buzz' (default: 5)")
if __name__ == "__main__":
args = parser.parse_args()
FizzBuzz(args.target, args.fizz, args.buzz)
将 sys.argv[1:]
的每个元素转换为整数的一个优点是每个参数都是真正可选的 - 您可以只传递 --buzz 7
以使用 7 作为最后一个参数和默认值其他人
这是一个可能的解决方案:
FizzBuzz(*map(int, sys.argv[1:]))
我正在编写一个从控制台获取三个可选参数的函数。
def FizzBuzz(target_number=100, fizz=3, buzz=5):
for i in range(target_number):
output = "" #This is what the function will return
if i % fizz == 0: #If a multiple of Fizz, add "Fizz" to output
output += "Fizz"
if i % buzz == 0: #If a multiple of Buzz, add "Buzz" to output
output += "Buzz"
if output == "": #If neither Fizz nor Buzz is in the output, print number instead
output += str(i)
print(output)
我知道了运行sys.argv:
if len(sys.argv) == 2:
FizzBuzz(int(sys.argv[1]))
elif len(sys.argv) == 3:
FizzBuzz(int(sys.argv[1]), int(sys.argv[2]))
else:
FizzBuzz(int(sys.argv[1]), int(sys.argv[2]), int(sys.argv[3]))
这种方法既乏味又无效。有更简单的方法吗?
查看 argparse
模块:
import argparse
parser = argparse.ArgumentParser(description='FizzBuzz')
parser.add_argument('--target', type=int, default=100,
help='Target number (default: 100)')
parser.add_argument('--fizz', type=int, default=3,
help="Multiples of this argument will output 'Fizz' (default: 3)")
parser.add_argument('--buzz', type=int, default=5,
help="Multiples of this argument will output 'Buzz' (default: 5)")
if __name__ == "__main__":
args = parser.parse_args()
FizzBuzz(args.target, args.fizz, args.buzz)
将 sys.argv[1:]
的每个元素转换为整数的一个优点是每个参数都是真正可选的 - 您可以只传递 --buzz 7
以使用 7 作为最后一个参数和默认值其他人
这是一个可能的解决方案:
FizzBuzz(*map(int, sys.argv[1:]))