返回带有参数的函数

时间:2019-09-27 14:12:42

标签: python python-3.x function pythonista

我正在尝试创建一个返回参数的函数。

Def a (x,y):
   *code*
   Return a(x,y)

当我尝试运行它时会返回错误。

>>> a(1,2)
RecursionError: maximum recursion depth exceeded

我想要的是

>>> a(1,2)
a(1,2)

有没有一种方法可以返回带有参数的函数?

我知道可以做到,但我不知道怎么做

>>> datetime.time(0,0)
Datetime.time(0,0)

编辑: 最好,我不想导入任何模块

4 个答案:

答案 0 :(得分:1)

您似乎没有有效的退货。该错误意味着python放弃了很多次。 示例(良好)将在“ num”次之后结束:

def a(x, num):
  if num == 0:
    return x
  return a(x + 1, num - 1)

示例(错误)永远不会返回其他任何内容:

def a(x, num):
  if num == 0:
    return x
  return a(x + 1, num)

答案 1 :(得分:0)

假设您要让它返回该函数的字符串表示形式,即:

def a (x,y):
   *code*
   return f"a({x},{y})"

或者,如果您不能使用f字符串:

def a (x,y):
   *code*
   return "a({x},{y})".format(x=x, y=y)

答案 2 :(得分:0)

我认为您在调用以下行时误解了“返回的”内容:

>>> datetime.time(0,0)
Datetime.time(0,0)

原始调用datetime.time(0,0)创建一个datatime对象到控制台。因为您没有保存返回的对象,所以控制台会自动调用名为class-method的{​​{1}}。

要复制行为,我们可以创建以下__repr__

class

答案 3 :(得分:0)

也许使用嵌套函数或lambda吗?

$ python -q
>>> def a(x,y):
...     def _a():
...             return x + y
...     return _a
... 
>>> a(1,2)
<function a.<locals>._a at 0x7f048329e560>
>>> a(1,2)()
3