Return 一个带参数的函数

Return a function with parameters

我正在尝试创建一个 return 自身带有参数的函数。

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

当我尝试 运行 时,这 return 是一个错误。

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

我要的是

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

有没有办法return带参数的函数?

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

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

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

您似乎没有有效的return。该错误意味着它多次调用自己 python 就放弃了。 示例(良好)将在“'num'”次后结束:

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

示例(坏)永远不会 return 其他任何东西:

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

假设您的意思是您希望它 return 调用函数的字符串表示形式:

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)

我认为您在调用以下行时误解了 "returned" 的含义:

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

最初的调用 datetime.time(0,0) 创建了一个 datatime 到控制台的对象。因为您没有保存返回的对象,控制台会自动调用名为 __repr__.

class-method

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

>>> class a:
...   def __init__(self, x,y):
...     self.x = x
...     self.y = y
...   def __repr__(self):
...     return "a({},{})".format(self.x, self.y)
...
>>> a(1,2)
a(1,2)

也许使用嵌套函数或 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