术语:Argv,调用程序
Posted
技术标签:
【中文标题】术语:Argv,调用程序【英文标题】:Terminology: Argv, Invoking a program 【发布时间】:2016-02-17 01:51:58 【问题描述】:Hy Python 社区 -
这是一个关于 Argv 和“调用”的基本术语问题
我是 python 和编程新手。
我正在阅读 openbookproject.com 上 sys 模块中的 argv 函数:
“argv 变量保存运行 Python 脚本时从命令行读取的字符串列表。这些命令行参数可用于将信息传递给程序在调用它的同时强>。” http://openbookproject.net/thinkcs/python/english2e/ch10.html
从定义上看似乎很清楚,但我还是想仔细检查一下:“在它被调用的时候”是不是意味着“当你运行程序的时候”?以第三种方式说“Argv 可以在运行时将信息传递到程序中”是否合适?
谢谢。
【问题讨论】:
【参考方案1】:是的,这就是“调用”的意思。
不,因为“运行时”涵盖了进程运行的整个时间窗口。准确地说,argv 可以在调用时将信息传递给程序。
【讨论】:
嗨!非常感谢您的回复。【参考方案2】:是的,没错。考虑以下代码testargs.py
:
import sys
print(sys.argv[1])
当您以python testargs.py banana
运行此脚本时,您会看到结果显示为“banana”。请注意,argv[0] 是脚本名称,之后给出的任何参数都是 argv[1]、argv[2] 等等。要更复杂地使用命令行参数,请考虑使用包含选项的 Argparse 模块添加帮助文档和其他功能。
编辑:我只讨论了调用部分,而不是运行时问题。
【讨论】:
嗨!谢谢你。【参考方案3】:“在它被调用的时候”是否仅仅意味着“当你运行程序的时候”?
是的。 “同时它被调用” 意味着您可以在程序运行的同时将数据传递给程序,即,您可以使用命令行参数 (sys.argv
) 将数据传递给程序 “同时调用它” 和其他一些方法 (IPC) 稍后传递它,例如,在它运行时通过标准输入。
以第三种方式说“Argv 可以在运行时将信息传递到程序中”是否合适?
没有。
argv
定义命令行对进程的外观,例如argv[0]
sets one of the name for the process (another one is derived from the path to the actual executable)。在 POSIX 上,argv
是 exec*()
functions 的参数,它被传递给 C main(argc, argv)
,它是 C 程序的入口点。
换句话说,argv
用于调用(启动/运行)进程,但@G Fetterman mentioned“运行时”可能指的是整个进程的运行时间,而不仅仅是调用时间。 argv
甚至在进程运行之前就可能已知,argv
通常在进程启动后保持不变。
【讨论】:
以上是关于术语:Argv,调用程序的主要内容,如果未能解决你的问题,请参考以下文章