python – ‘sys.argv’是什么意思?

我正在从代码中学习,我对它的一条线感到困惑:

things = [float(arg) for arg in sys.argv[1:]]
Omega_a, Omega_b, Delta_a, Delta_b, \
init_pop_a, init_pop_b, tstep, tfinal = things

我在网上搜索并试图了解sys.arg的含义,这是我的理解:

所以sys.argv [0]是文件名,sys.argv [1:]是用户应该给出的其余参数.我不确定我是否理解它,如果它是,那么我不明白为什么它不能这样:

Omega_a = input() 
Omega_b = input()
etc...

这两种给出参数的方式有什么区别?

另外,如果我运行代码(按F5),Python shell会给出一个错误,如:

Traceback (most recent call last):

File "C:\Users\testcode.py", line 55, in <module>
init_pop_a, init_pop_b, tstep, tfinal = things
ValueError: need more than 0 values to unpack

在给我一个错误之前,我甚至没有机会给出参数(sys.argv [1:]).所以我在网上搜索.看起来我需要在cmd中运行这个代码,这让我更加困惑,为什么要这样做以及我应该如何运行cmd才能运行它?

最佳答案
不同的是,sys.argv(命令行)参数是在程序运行之前给出的(在启动时):

python testcode.py arg1 arg2 arg3 arg4 and so on ...

这将导致您的变量为:

Omega_a = 'arg1'
Omega_b = 'arg2'
Delta_a = 'arg3'
Delta_b = 'arg4'
init_pop_a = 'and'
init_pop_b = 'so'
tstep = 'on'
tfinal = '...'

虽然在程序运行时给出了input()s.

因为你没有用参数启动程序,它会给你错误,
因为没有足够的(正好0)参数被解压缩到变量中.

转载注明原文:python – ‘sys.argv’是什么意思? - 代码日志