python - 我可以像 shell 命令一样调用不带括号的 Python 函数吗?如果是这样,如何?

标签 python function terminal terminal-emulator

<分区>

第一次在这里发帖,如有不妥之处请见谅。

我正在编写一个类似于终端的实用工具,主要用于批量文件编辑。我的目标是让每个函数都是三个字母 ling,有点像 Assembly。例如,mkd("yeet")创建一个名为 yeet 的目录。
它的基本工作方式如下:我定义了一大堆函数,然后我设置了一个 while True。循环,打印 eval()无论我输入什么。 到目前为止,一切都很顺利,除了一件事。我希望能够在不添加括号的情况下调用函数。之后应添加任何参数,例如使用 sys.argscv[1] .

这是一个link to the GitHub repo .

这在 Python 中是否可行,如果可行,如何实现?

显然,只要输入函数名就会返回 <function pwd at 0x7f6c4d86f6a8>或类似的东西。

提前致谢,
海象胶靴

最佳答案

您可以使用 locals globals 取决于范围并传递您在参数中获得的字符串:

>>> def foo():
...     print("Hi from foo!")
... 
>>> locals()["foo"]()
Hi from foo!

在哪里"foo"将是 sys.args[1]从调用 python script.py foo

或者您可以使用可用的命令定义您自己的字典,例如:

calc.py

commands = {
    "add" : lambda x, y: x + y,
    "mul" : lambda x, y: x * y,
}

if __name__ == __main__:
    import sys
    _, command, arg1, arg2, *_ = sys.args
    f = commands.get(command, lambda *_: "Invalid command")
    res = f(int(arg1), int(arg2))
    print(res)

调用 python calc.py add 5 10

关于python - 我可以像 shell 命令一样调用不带括号的 Python 函数吗?如果是这样,如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55725603/

相关文章:

python - 无法安装 ipykernel。如果 pip 不可用。请使用该包

Python配置文件: Any file format recommendation? INI格式还合适吗?看起来很老派

python - 这个 if 语句表达得好吗?

python - 将 .profo 文件的文件夹编译为多种语言

linux - 如何从 .sh 文件通过串行向 Arduino 发送命令?

python - 逐步执行 Python 循环,步长以指数形式给出

Python - 如何使用循环缩短这段重复代码?

python - 如何在 python 中一起传递默认和可变长度参数?

java - if 函数的未定义运算符 - Java

terminal - PhpStorm 不断打开默认的 macOS 终端