【问题标题】:Terminology: Argv, Invoking a program术语:Argv,调用程序
【发布时间】: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 可以在运行时将信息传递到程序中”是否合适?

谢谢。

【问题讨论】:

    标签: python terminology argv sys


    【解决方案1】:
    1. 是的,这就是“调用”的意思。

    2. 不,因为“运行时”涵盖了进程运行的整个时间窗口。准确地说,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 通常在进程启动后保持不变。

    【讨论】:

      猜你喜欢
      • 2016-04-06
      • 1970-01-01
      • 2018-03-30
      • 1970-01-01
      • 2020-06-26
      • 1970-01-01
      • 2018-06-29
      • 2019-02-03
      • 1970-01-01
      相关资源
      最近更新 更多