Существует ли элегантный способ сброса имен системных методов после их переназначения? - PullRequest
0 голосов
/ 26 июня 2019

Это может быть дубликат, но я не смог найти ни одного поста об этом, поэтому, если это так, пожалуйста, свяжите меня с этим постом.

Если у меня есть блок кода в блокноте ipython:

input = input("enter some info")

тогда, когда я перезапущу тот же блок кода, он выдаст мне ошибку

TypeError: 'str' object is not callable

Даже если я переименую имя переменной, я все равно получаю ту же ошибку. Как я могу вернуть исходную функциональность метода input без необходимости перезагружать весь блокнот jupyter?

Спасибо

Ответы [ 2 ]

2 голосов
/ 26 июня 2019

Рекомендуется не использовать системные имена, такие как input, min, max и т. Д. Вместо этого используйте другое имя целиком или, по крайней мере, поставьте завершающее подчеркивание: input_, min_, max_. Но если это неизбежно:

IPython reset сбросит все имена. Пример использования:

In [1]: input = input("Enter some info: ")
Enter some info: hello

In [2]: input
Out[2]: 'hello'

In [3]: reset
Once deleted, variables cannot be recovered. Proceed (y/[n])? y

In [4]: input
Out[4]: <function input>
0 голосов
/ 26 июня 2019

Не рекомендуется называть переменную после встроенной функции. Но если вы настаиваете, вы можете использовать заполнитель для исходной функции.

input_function = input   # save the input function to another variable
input = input("enter some info")

# do something with the user's input with the input variable (string)

input = input_function   # restore it back
...