术语: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 上,argvexec*() functions 的参数,它被传递给 C main(argc, argv),它是 C 程序的入口点。

换句话说,argv 用于调用(启动/运行)进程,但@G Fetterman mentioned“运行时”可能指的是整个进程的运行时间,而不仅仅是调用时间。 argv 甚至在进程运行之前就可能已知,argv 通常在进程启动后保持不变。

【讨论】:

以上是关于术语:Argv,调用程序的主要内容,如果未能解决你的问题,请参考以下文章

Python 术语:Learn Python the Hard Way 练习 13 中“= argv”左边的东西

如何使用 argc 和 argv 调用函数?

sys.argv

nodejs怎么调用python命令行

python模块中sys.argv[]使用

计算机类术语