当您自己调用python 使其进入交互模式时,没有传入任何参数。因此,argv 为空。
我在Ubuntu 上运行,但它与Windows 中的一般概念相同:
:~ $ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from sys import argv
>>> print argv
>>> ['']
Powershell 和 Python 是两个独立的东西,每个都有自己的参数概念。正如bash 脚本具有传入参数的概念一样,Powershell 也是如此,尽管它们的处理方式不同。但是,两者都没有直接连接到 Python 的argv。
一般来说,可以使用 environment variables 在 Python 和 shell 之间来回传递信息(即,您可以在 Python 中设置 environment variables 以在 shell 中读取,反之亦然,但是在任何一种情况下,这些都与argv 不同,后者特别是传递给python 可执行文件的参数)。或者可以使用 shell 中的环境变量来确定应该将哪些参数传递给python,从而确定argv 将是什么。
查看此链接了解更多详情:https://docs.python.org/2/library/sys.html#sys.argv
根据 OP 的评论进行编辑:
您本身不能声明argv。它代表解释器的调用方式,在交互模式下,根据定义,它没有参数。
对于您的具体示例,它与tuples 在Python 中的解包方式和argv 的当前状态有关,它是空字符串。
:~ $ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from sys import argv
>>> firstArgument=argv
>>> print firstArgument
['']
>>> firstArgument, secondArgument=argv
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: need more than 1 value to unpack
由于argv 中只有一个元素,因此不能将其分配给两个变量。
例如,您可以这样做:
>>> firstArgument, secondArgument=argv,1
>>> print secondArgument
1
现在实际上有两个值 - 元组 ('', 1),因此可以将其解压缩到两个不同的变量中。