使用 .get() python 通过函数传递参数

我有以下代码

    cmd = raw_input("> ")
    if cmd[0] == "/":
        if " " in cmd:
            cmd = cmd.split(" ")
            {
            '/help':  help,
            '/cf':  cf(f = cmd[1]),
            '/rf':  rf(f = cmd[1]),
            '/md':  md(f = cmd[1]), 
            '/rd':  rd(f = cmd[1]), 
            '/dir': dir(f = cmd[1]), 
            '/tree': tree(f = cmd[1]), 
            '/date': date, 
            '/time': time_, 
            '/clear': clear,
            '/echo': echo(f = cmd[1]),   
            }.get(cmd[0])()

出于某种原因,如果我调用 /md,它会像调用 /cf 一样运行它,任何人都可以提供任何见解吗?

我的整个代码可以在这里找到:https : //pastebin.com/ukwY6LfV

加里02127

无需更深入地查看您的代码,我可以告诉您您的结构看起来很奇怪...查看字典中的第二行,'/cf': cf(f = cmd[1]),您在那里调用 func cf() ,然后可能在最后再次调用它在}.get(cmd[0])()结尾。我看到您也试图将 f 设置为参数。但我认为你不想在第一个实例中调用 func 。相反,您只需要指向 func 的“指针”,即 func 名称。由于您试图传递一个 arg,我认为 lambda 语句就是您想要的。所以,尝试改变:

'/cf':  cf(f = cmd[1]),

'/cf':  lambda p=cmd[1]: cf(f = p),

看看这是否有效。通过 lambda 调用,您实际上并不是在调用 cf() 函数,而是创建了一个新的、无名的函数,该函数稍后将使用所需的参数调用 cf() 函数(如果被调用)。

您的 /date、/time 和 /clear 行应该没问题,但您需要更改“dict”语句中的所有其他行以使用 lambda 调用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python:通过函数传递参数

Python请求-通过GET传递参数

通过传递参数从R调用python函数

使用GET将参数传递给PHP函数

使用argv将参数传递给python中的函数

Python Pandas:使用参数将多个函数传递给agg()

如何使用argparse将参数传递给python函数?

如何使用python遍历传递给函数参数的列表?

使用python ctypes通过引用c ++函数传递长向量

Python通过一系列函数调用传递参数

如何打印我通过 python 中的参数传递的函数的名称?

如何使用 lambda 函数通过 Slot 的参数传递 QWidget 的文本

Python函数传递参数

通过 GET php 传递参数

如何使用Cython将python函数作为参数传递给c ++函数

Python函数:使用批处理文件将.txt文件中的参数传递给python函数并执行函数

我如何在python中使用argparse函数将可选参数传递给python类

通过列表将参数传递给函数,并忽略未使用的参数

在 Python 中通过另一个函数传递函数参数

使用 python flask 覆盖 GET 函数

Python:如何使用dict.get()函数?

通过引用传递给python(áC ++)中的类的参数,以使用类方法对其进行修改

如何使用python在perforce中创建分支并避免编辑器通过参数传递映射

如何通过使用bash脚本传递参数来运行python文件?

Python中的函数参数传递

不带参数传递Python函数

在python函数中传递参数

使用传递为参数的函数

如何使用urllib传递get方法的参数?