1

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

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

4 回答 4

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)
于 2019-09-27T14:17:16.467 回答
0

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

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

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

要复制行为,我们可以创建以下内容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)
于 2019-09-27T14:30:21.830 回答
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)
于 2019-09-27T14:17:51.507 回答
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
于 2019-09-27T14:35:50.313 回答