第一次在这里发帖,如有不妥之处请见谅。
我正在编写一个类似于终端的实用工具,主要用于批量文件编辑。我的目标是让每个函数都是三个字母 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