为什么函数 运行 没有参数?
Why does function run without paramater?
我目前正在学习 python 中的 curses,我在网上发现这段代码让我很困惑。
import curses
def draw_menu(stdscr):
# do stuff
# if you want more code just let me know
def main():
curses.wrapper(draw_menu)
if __name__ == "__main__":
main()
当我 运行 时,我没有得到预期的 missing 1 required positional argument
错误,因为 curses.wrapper(draw_menu)
行中没有传递任何参数。这是 curses
的事情吗?非常感谢任何帮助。
函数是一种数据类型,与字符串、整数等一样。
def my_function(txt):
print(txt)
此处type(my_function) # => <class 'function'>
当你用括号调用它时,你调用了函数内部的代码:my_function('hello') # => prints hello
在那之前你可以完美地将一个函数作为参数传递给另一个函数。
最后一个可以调用你传递给它一些参数的那个。
就像你的情况一样,我猜想 curses.wrapper()
创建了一个屏幕界面,它作为参数传递给你的 draw_menu()
函数。
您或许可以使用该屏幕对象来构建您的 curse 应用程序。
看到这个:Python function as a function argument?
curses.wrapper(draw_menu)
和 curses.wrapper(draw_menu())
有很大区别。 curses.wrapper(draw_menu)
调用 curses.wrapper
并将函数 draw_menu
作为参数传递给它。相反,curses.wrapper(draw_menu())
会 调用 draw_menu
并将其 return 值传递给 curses.wrapper
.
curses.wrapper
将调用您传递给它的函数。从那个 link:
Initialize curses and call another callable object, func, which should be the rest of your curses-using application.
例如,当curses
完全初始化时,它将调用draw_menu
。
这是来自 here 的 curses.wrapper
的签名。
curses.wrapper(func, /, *args, **kwargs)
它说您需要给 curses.wrapper
一个函数引用参数,后跟零个或多个参数和关键字参数。您的代码满足这些要求。
Python 允许这样的函数签名,使开发人员在调用者可以传递的内容方面具有很大的灵活性。
我目前正在学习 python 中的 curses,我在网上发现这段代码让我很困惑。
import curses
def draw_menu(stdscr):
# do stuff
# if you want more code just let me know
def main():
curses.wrapper(draw_menu)
if __name__ == "__main__":
main()
当我 运行 时,我没有得到预期的 missing 1 required positional argument
错误,因为 curses.wrapper(draw_menu)
行中没有传递任何参数。这是 curses
的事情吗?非常感谢任何帮助。
函数是一种数据类型,与字符串、整数等一样。
def my_function(txt):
print(txt)
此处type(my_function) # => <class 'function'>
当你用括号调用它时,你调用了函数内部的代码:my_function('hello') # => prints hello
在那之前你可以完美地将一个函数作为参数传递给另一个函数。 最后一个可以调用你传递给它一些参数的那个。
就像你的情况一样,我猜想 curses.wrapper()
创建了一个屏幕界面,它作为参数传递给你的 draw_menu()
函数。
您或许可以使用该屏幕对象来构建您的 curse 应用程序。
看到这个:Python function as a function argument?
curses.wrapper(draw_menu)
和 curses.wrapper(draw_menu())
有很大区别。 curses.wrapper(draw_menu)
调用 curses.wrapper
并将函数 draw_menu
作为参数传递给它。相反,curses.wrapper(draw_menu())
会 调用 draw_menu
并将其 return 值传递给 curses.wrapper
.
curses.wrapper
将调用您传递给它的函数。从那个 link:
Initialize curses and call another callable object, func, which should be the rest of your curses-using application.
例如,当curses
完全初始化时,它将调用draw_menu
。
这是来自 here 的 curses.wrapper
的签名。
curses.wrapper(func, /, *args, **kwargs)
它说您需要给 curses.wrapper
一个函数引用参数,后跟零个或多个参数和关键字参数。您的代码满足这些要求。
Python 允许这样的函数签名,使开发人员在调用者可以传递的内容方面具有很大的灵活性。