в python3 почему «input» интерпретируется как строка? - PullRequest
0 голосов
/ 14 октября 2018

Если я помещу этот код в основную программу, он будет работать нормально:

print("type of input=", type(input))
c = input('Enter q to quit, anything else to 
continue\n:') 
if (c.lower()=='q'): sys.exit()

и, как и ожидалось, говорит, что «ввод» является встроенной функцией.

Но если я помещаю это в функцию, я получаю странную ошибку:

def pause():
    print("type of input=", type(input))
    c = input('Enter q to quit, anything else to continue\n:') 
    if (c.lower()=='q'): sys.exit()
    return (c)

Это печатает, что 'input' является строкой типа, а затем выдает

TypeError: 'str' object is not callable

Функция паузы - это первая вещь в программе после импорта.

Есть идеи, что может вызвать эту проблему?

Если я поставлю функцию паузы в КОНЦЕ файла,и измените «main» на функцию и вызовите ее после определения паузы, все работает нормально.

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

@ Джон прав, где-то должно быть input как переменная или что-то в этом роде, перезапись не очень хорошая вещь, поэтому, если вы хотите сохранить как раньше, (но после того, как у вас больше нет к ней доступа):

input = ...
...
del input
# back to regular input
inp=input(...)# works

Или оставьте input переменную, сделайте:

...
inp=__builtins__.input(...)

Это хорошо, потому что все еще имеют доступ к предыдущей переменной input и делают __builtins__input для реального input

0 голосов
/ 14 октября 2018

Если вызов input() говорит вам, что str is not a callable, это означает, что вы перезаписали input строкой где-то ранее в вашем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...