泽德·肖的“学习Python的辛苦”经常问你“用英文写了”什么是脚本的每行的作用。 我在努力做到这一点与功能相关的一些东西(命令?) 的argv,因为我不知道什么名字的代码的某些部分。 哎呀,我甚至不知道什么叫argv的 - 一个功能? 一个命令? 变量? 我知道这是一个模块。 但是回到正轨:
下面是从代码练习13 :
from sys import argv
script, first, second, third = argv
print "The script is called:", script
print "Your first variable is:", first
print "Your second variable is:", second
print "Your third variable is:", third
捷思锐指出“‘argv的’是‘的说法变量。’我的问题是, 是什么的东西,等号左边的名字签在三线?
通俗的讲,我的冲动,是调用的话“脚本”,“第一”等变量本身 - 但似乎并不正确,因为根据Zed的ARGV是“参数变量”。
我不认为称他们为“论据”是正确要么; 我只读过的命令行参数术语“说法”。
“参数”可能看起来,因为它是在运动的标题所提到的,但这样做网络搜索与组合“等号”,“=”,“巨蟒”,“ARGV”,“定义”等不很受启发。 在搜索的事情是非常困难的,当你不知道他们在叫什么。
我对所发生的事情在这个剧本很清楚,我只是不上它的一部分的名称清晰。 我非常肯定我会当这是回答就打我的额头。
事到左边"="
是变量得到右边的变量自己的价值 。
鉴于:
script, first, second, third = argv
argv
是在这种情况下包含4项字符串列表 。 这些字符串是“解包”,并分配到四个变量在左边=
。
argv
得到当Python程序从命令行调用,这样它的值是:
test.py this is sure cool
在这种情况下argv
将包含['test.py', 'this', 'is', 'sure', 'cool']
这些字符串命令后,被称为“ 命令行参数 ”(见本教程 )和脚本的名称,任何参数都存储在argv
。 这是在启动时将信息发送到脚本的方式。
在这种情况下,变量得到以下值:
script is set to "this.py" # the string is in argv[0]
first to "is" # argv[1]
second to "sure" # argv[2]
和
third to "cool" # argv[3]
所以:
script, first, second, third = argv
真的等同于:
script = argv[0]
first = argv[1]
second = argv[2]
third = argv[3]
这是唯一的了Python可以让你做一个漂亮的俯冲这项任务。
注意,你可以拿出你的命令行参数使用适当的指标值的任何命令。
这种机制被用来传达信息给Python脚本。 你可以想象运行预计输入文件和输出文件的程序。 相反,在脚本中硬编码他们,你可以为他们提供在命令行上。 例如,
computeData.py input.txt result.txt
有时,它更容易只需键入一些代码到交互式Python提示,看到这些东西是如何工作的。
虽然sys.argv中是Python本身为您定义的列表,它不是从任何列表或元组(易变的和不可变的类似数组类型的Python),你自己定义的不同。 因此,试图定义一个自己和它玩。 你声明的变量命名后argv = ['123','456','789']
这是一个列表类型,尝试将其分配给另一个名字:
anothername = argv
请注意,什么都不会发生。 现在发现,如果你不是试图给三个不同的变量会发生什么:
v1,v2,v3 = argv
第一(技术上讲,“第零”)argv中元素存储在V1,argv的的第二个元素被存储在V2,等等。
我相信我会叫V1,V2,V3是“那打算举行的东西,以前是在列表中的argv元素变量列表中,但我希望在自己的地方来解压缩和存储”。
要回答你的第一个问题, argv
是的属性 sys
模块。 至于你的第二个问题,Python的文档不为赋值表达式的右边,但指定名称script
, first
等可以被称为在这方面变量。
文章来源: Python terminology: things to left of “= argv” in Learn Python the Hard Way exercise 13