VIS*_*SQL 1 command-line-arguments python-2.7
与此问题相关的python 中的命令行参数。
使用 SYS 模块,如何在代码中使用命令行参数作为函数名称和函数值 - 而不导入其他模块?
我想要一个仅使用 sys 的解决方案。另外,请不要使用可变长度参数答案。这些令人困惑。假设在命令行中仅指定了函数名称和一个函数变量。
import sys
def reversal(aaa): return aaa[::-1]
a = sys.argv[1]
b = sys.argv[2]
print a(b)
Run Code Online (Sandbox Code Playgroud)
在命令行中
cpu_location$ python blah.py reversal 'abcdefg'
Traceback (most recent call last):
File "blah.py", line 8, in <module>
print a(b)
TypeError: 'str' object is not callable
Run Code Online (Sandbox Code Playgroud)
我想知道如何使 sys.argv[1] 被视为函数名,从而调用我定义的函数。
我在这方面看到的其他帖子是以下内容的混搭: - 处理 C/C++ 并添加一些其他模块 - 根本不使用 sys - 使用 argv 项作为函数的值和其他文件的名称,而不是功能
比eval解决方案更好的是:
a = globals()[sys.argv[1]]
a(b)
Run Code Online (Sandbox Code Playgroud)
globals()返回将全局变量名称映射到这些全局变量的字典。因此globals()['reversal']对reversal函数求值。
它比eval函数更安全。按照你的方法,你可以做类似的事情:
python blah.py 'lambda x: x+"hi"' foobar
Run Code Online (Sandbox Code Playgroud)
这将打印foobarhi,这是意外的,因为这不是函数名称。
| 归档时间: |
|
| 查看次数: |
4879 次 |
| 最近记录: |