Title: Able to name a variable as 'input'. This creates problem when using input() function.
Type: behavior Stage: resolved
Components: IO Versions: Python 3.6
Status: closed Resolution: not a bug
Dependencies: Superseder:
Assigned To: Nosy List: kishoreaadada, rhettinger
Priority: normal Keywords:

Created on 2018-07-15 06:11 by kishoreaadada, last changed 2018-07-15 06:40 by rhettinger. This issue is now closed.

File name Uploaded Description Edit
inputError.png kishoreaadada, 2018-07-15 06:11
Messages (2)
msg321680 - (view) Author: Kishore Aadada (kishoreaadada) * Date: 2018-07-15 06:11
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
msg321681 - (view) Author: Raymond Hettinger (rhettinger) * (Python committer) Date: 2018-07-15 06:40
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
    >>> input

Also, consider using tools like pylint and flake8 which give warnings in cases like this.
Date User Action Args
2018-07-15 06:40:57rhettingersetstatus: open -> closed

nosy: + rhettinger
messages: + msg321681

resolution: not a bug
stage: resolved
2018-07-15 06:11:28kishoreaadadacreate