python 调用嵌套函数

fzsnzjdm  于 2023-01-01  发布在  Python
关注(0)|答案(1)|浏览(94)

这可能已经涵盖了以前,但我有问题调用嵌套函数为我的discord机器人。这是为了倒计时从3到0和显示输出给用户在每一个阶段。我有异步命令的工作,所以我想我只会使用打印测试,这就是为什么没有可见的。
如果有人能看到我的代码的问题,你能让我知道,因为我撞上了一堵墙。

def count(countfunc):

def wrapper(*args, **kwargs):

    wrapper.counter = 3
    wrapper.start = 3

    wrapper.counter -= 1
    if wrapper.counter == 0:
        print(f"has ran out of warnings & is now banned on the server for 1 day")
    else:
        print(f"has", wrapper.counter ,"warnings left")
    return countfunc(*args, **kwargs)

return wrapper("*args, **kwargs")

@count def countfunc(wrapper):
    return
 
print (countfunc)

我尝试从 Package 器if语句调用打印值。当在count函数/ Package 器函数内调用时可以工作,但当在其外部调用时只显示“None”。我收集这是由于它无法读取函数值,但不100%确定如何修复。
先谢谢你,本

j5fpnvbx

j5fpnvbx1#

在您提供的代码中,wrapper函数没有返回任何值,因此当调用countfunc函数时,它返回None。这就是print(countfunc)语句的输出为None的原因。
为了解决这个问题,我在wrapper函数的末尾添加了一个return语句,这样当countfunc函数被调用时,它会返回它的值,这允许您从countfunc函数中访问wrapper.counter和wrapper.start的值,并使用这些值来显示所需的输出。

def count(countfunc):
  def wrapper(*args, **kwargs):
    wrapper.counter = 3
    wrapper.start = 3

    wrapper.counter -= 1
    if wrapper.counter == 0:
      print(f"has ran out of warnings & is now banned on the server for 1 day")
    else:
      print(f"has", wrapper.counter ,"warnings left")
    return countfunc(*args, **kwargs)

  return wrapper

@count
def countfunc(wrapper):
  return

print(countfunc)

相关问题