Причина, по которой это не удается:
def Example(x):
bar = input()
return bar
print (Example(bar))
#Output: NameError: name 'bar'is not defined
Это потому, что вы пытаетесь передать переменную bar
методу Example()
, но bar
никогда не определялся где-либо до вызова.
Я не совсем уверен, что именно вы хотите сделать с помощью этого метода, так как вы передаете переменную, но не используете ее вообще.
Комментарий Ответ:
str
не является встроенной функцией (хотя и перечисленной на странице ), а скорее является конструктором для встроенного типа str
.Чтобы показать, что вы просто переназначаете метод, связанный с ключевым словом (не обязательно зарезервированным, но, тем не менее, ключевым словом), рассмотрите следующее:
>>> str
<class 'str'>
>>> abs
<built-in function abs>
>>> str = abs
>>> str
<built-in function abs>
Таким образом, вы по существу перезаписали присвоение str
конструктор класса.Я использовал abs
в этом примере, но то же самое относится (с изюминкой) к input
:
>>> str
<class 'str'>
>>> input
<built-in function input>
>>> str = input
>>> str
<built-in function input>
>>> str = input()
hello world
>>> str
'hello world'
Разница в том, что вы назначаете строку (типа str
) ключевому слову str
.Таким образом, вы никогда не сможете использовать str(10)
, чтобы получить '10'
, потому что теперь это будет похоже на вызов hello world(10)
, который не удался.