Почему щепа ломает мои струны?

Я пытаюсь использовать sched для запуска tweetsearch, функции, которая принимает один аргумент, строку.

s.enter(delaypercycle, 1, tweetsearch, "nike")
s.run()

Это возвращает "TypeError: tweetsearch() принимает ровно 1 аргумент (4 дано)". Изменение "nike" на "курицу" возвращает ту же ошибку, кроме как с (7 дано).

Любая идея, как передать строку в Sched?

Пример кода, который выдает ту же ошибку:

import sched, time
s = sched.scheduler(time.time, time.sleep)
def printword(word):
    print word
While True:
    s.enter(1, 1, printword, "chicken")
    s.run

2 ответа

Решение

Требуется кортеж аргументов. Передача в одну строку заставляет ее использовать эту строку в качестве итерируемой: каждый символ становится отдельным аргументом.

Попробуйте вместо этого передать кортеж: ("Nike",) (обратите внимание на запятую).

Измените свой код на это:

s.enter(delaypercycle, 1, tweetsearch, ("nike",))
s.run()

sched пытался сделать tweetsearch(*"nike"), что эквивалентно tweetsearch('n', 'i', 'k', 'e'),

Другие вопросы по тегам