【问题标题】:Call function with a keystroke ending loop in Python在 Python 中使用击键结束循环调用函数
【发布时间】:2018-09-25 01:05:50
【问题描述】:

目前我正在尝试使用不同的函数调用一个函数,该函数循环初始函数,直到我自己击键。这是我要运行的代码:

def input_thread(a_list):
    raw_input()
    a_list.append(True)

def loop_display(function):
    a_list = []
    thread.start_new_thread(input_thread, (a_list,))
    while not a_list:

        function
        #print "next"

        time.sleep(2)

loop_display(function)

问题是它只运行一次被调用的函数。

当我在循环中打印某些内容时,它会循环打印调用,但传入的函数只有一次。

理想情况下,我想将此循环放入另一个文件中,并在需要时调用它。但是,如果我不能通过它调用另一个函数,那将不起作用,对吗?

我从this answer.中提取了循环代码

注意:如果重要,结束函数的击键工作正常。

【问题讨论】:

  • 为什么不使用普通的同步原语,比如锁和信号量?
  • @Marat 我不知道这些东西是什么。我是自学成才,所以有些事情对我来说还不是很明显。
  • 我想像Event 这样的东西可以稍微简化同步部分。此外,还有检查标准输入的非阻塞方法,这将完全消除对线程的需求
  • @Marat 你知道那段代码的样子吗?这似乎是需要一段不那么简单的代码的简单事情之一。

标签: python python-2.7 function while-loop call


【解决方案1】:

我认为您只需要在函数后添加括号即可。

`

def function():
    print("hello")

import thread
import time
def input_thread(a_list):
    raw_input()
    a_list.append(True)

def loop_display(function):
    a_list = []
    thread.start_new_thread(input_thread, (a_list,))
    while not a_list:

        function()
        #print "next"

        time.sleep(1)

loop_display(function)

`

【讨论】:

  • 这不起作用,它会抛出“TypeError: 'NoneType' object is not callable”
  • 你是如何定义函数的?
  • 什么意思?我想调用什么函数?现在我只是想打印一个字符串来让它工作。
  • 您是否尝试过定义函数,例如:def function(): print("hello world")
  • 这成功了!我必须最初使用 loop_display(function()) 而不是 loop_display(function)
猜你喜欢
  • 2021-09-15
  • 2013-12-24
  • 2018-09-01
  • 2022-12-03
  • 2023-01-09
  • 1970-01-01
  • 2023-03-23
  • 2021-02-15
  • 1970-01-01
相关资源
最近更新 更多