Issue 34119: Able to name a variable as 'input'. This creates problem when using input() function.
When i used input as a variable name, there is no error provided. After that I am calling input() function to read data. In such case, below error is reported.
Python 3.6.3 (v3.6.3:2c5fed8, Oct 3 2017, 17:26:49) [MSC v.1900 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> input = "Test input"
>>> data = input("Please enter some input")
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
data = input("Please enter some input")
TypeError: 'str' object is not callable
>>>
While "shadowing a builtin" was irritating in your case, it is an unavoidable part of how Python works and is in some cases considered a feature.
FWIW, there is a workaround. You can reference the real input() function directly in the __builtins__ namespace:
>>> input = 'x'
>>> __builtins__.input('Enter your name: ')
Enter your name: Becky
'Becky'
>>> input
'x'
Also, consider using tools like pylint and flake8 which give warnings in cases like this.