<p>引用<a href="https://docs.python.org/2/library/sys.html#sys.argv" rel="nofollow">^{<cd1>}</a>文档</p>
<blockquote>
<p>The list of command line arguments passed to a Python script. <code>argv[0]</code> is the script name (it is operating system dependent whether this is a full pathname or not).</p>
</blockquote>
<p>因此,<code>argv</code>的第一个值将是当前脚本名。在第一种情况下,您尝试将三个值解压到两个变量上。这就是它失败的原因。在</p>
<p>在第二种情况下,将当前脚本名称分配给<code>a</code>,并将<code>48,40</code>分配给<code>b</code>。在</p>
<p>您可以通过打印<code>argv</code>、<code>a</code>和{<cd5>}来确认这一点,如下所示</p>
<pre><code>➜ Desktop cat Test.py
from sys import argv
print argv
a, b = argv
print a, b
def gcd(a, b):
while a:
a, b = b % a, a
print b
➜ Desktop python Test.py 40, 48
['Test.py', '40,', '48'] # Note that argv has three items and first is the file name
Traceback (most recent call last):
File "Test.py", line 4, in <module>
a, b = argv
ValueError: too many values to unpack
➜ Desktop python Test.py 40,48
['Test.py', '40,48']
Test.py 40,48
</code></pre>
<blockquote>
<p>Secondly, why do I get no output in the second case?</p>
</blockquote>
<p>这是因为根本没有调用函数<code>gcd</code>。在</p>
<hr/>
<p>为了解决这个问题,因为您只需要两个项目,我将简单地分配如下</p>
^{pr2}$
<p>然后调用函数,像这样</p>
<pre><code>gcd(a, b)
</code></pre>
<p>我们需要将值转换为整数,因为参数将是字符串。在</p>
<p><strong>注意:</strong>另外,传递的参数需要用空格字符隔开,而不是逗号。所以,你可以这样执行程序</p>
<pre><code>from sys import argv
def gcd(a, b):
while a:
a, b = b % a, a
print b
a = int(argv[1])
b = int(argv[2])
gcd(a, b)
➜ Desktop python Test.py 40 48
8
</code></pre>