【问题标题】:Enter new variable as argument输入新变量作为参数
【发布时间】:2018-11-23 11:00:33
【问题描述】:

我想创建一个函数,将一些字符链作为参数,并将其用作str 对象。

def useless_function(argument) :
    print(argument)

useless_function(banana)
--> NameError: name 'banana' is not defined

这就是我所做的:我创建了一个装饰器,它将我作为参数输入的任何内容转换为我的函数可以打印的str

def decorator(f) :

    def wrapper(arg_f) :
        str_arg = str(arg)
        f(str_arg)

    return wrapper

所以现在我可以用我的装饰器装饰 useless_function,useless_function(banana) 将打印'banana'。并且它将与它作为useless_function 的参数输入的任何内容一起使用。

我的问题是:有没有更优雅的方式或更简单快捷的方式来将这种自动转换为可用作参数的字符串?

【问题讨论】:

  • 这个问题很难理解。请至少添加一个示例,说明您想要实现的行为或目标。
  • 其实我的decorator是不行的,因为argument是f不知道的(未定义),它也是wrapper不知道的……所以问题还是一样。

标签: python-3.x arguments parameter-passing implicit-conversion


【解决方案1】:

请您详细说明一下,因为我不明白您在寻找或说什么。 如果你的意思是:在函数内部你能做input("variable")吗?那么答案是肯定的。它本质上只是来自 python2 的raw_input()。如果我没记错的话,你键盘上的输入总是str

编辑后更新:

仍然不清楚您要做什么。 在函数结束时,您执行return *,但我假设您知道这一点。

我真的很困惑,但你考虑过只做str(argument)吗?如takes_argument(str(argument))

第二次编辑后第二次更新:

我想我终于明白你要做什么了,但我可能错了。

现在,问题是def useless_function(argument) : 会期望argument 被定义为具有某些值的变量。除了实际将"argument" 告诉python 您插入的是一串字符而不是尝试引用某个变量及其值之外,我不知道任何其他方式。与print('something') 的情况相同,如果我输入print(something),python 会尝试查找您尚未定义的名为something 的变量。

希望这是有道理的。

【讨论】:

  • 我编辑了我的问题,希望它变得更清楚。我正在尝试创建一个将文本作为参数的函数。就像你在 raw_input) 变成 str 之前给它的一样。
  • 是的,我试过str(argument),它提出了SyntaxError...我希望第二次编辑会再次清晰。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-11
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多