我正在尝试创建一个返回参数的函数。
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)
编辑: 最好,我不想导入任何模块
答案 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