Это проблема глобального и локального масштаба. В то время как вы можете получить доступ к функции x
как глобальное значение области, когда вы переназначить переменную, вы затенения глобальный, но тогда вы не возвращают значение:
# return local
def getinput(x):
x = input('Enter x: ')
return x
# affect global
def getinput(x):
global x
x = input('Enter x: ')
Использование локальной переменной и возвращает значение в обычно предпочтительнее изменять глобальные переменные, если у вас нет для этого вполне оправданной ситуации.
Примечание о изменяемых и неизменяемых типах
Существует второй случай в эту ситуацию, и что о типе объекта, который вы затрагивающие. int
и string
, например, являются неизменяемыми.Вы не можете изменить свое значение, не создавая в результате новый объект. A list
или dict
являются примерами изменяемых типов. Их можно добавлять и удалять, изменяя их значение.
Рассмотрим изменяемого типа list
aList = []
def func():
aList.append(1)
print aList # prints []
func()
print aList # prints [1]
Это добавит в глобальный список просто отлично даже без указания глобального ключевого слова, потому что сам список все тот же объект списка. Но если вы перезаписать этот список с новым списком, без глобального, он не вступит в силу во всем мире:
aList = []
def func():
aList = [1]
В двух словах, изменяемые типы не нужно глобальное ключевое слово, если вы только собираетесь изменить содержимое объекта, но не назначать новый объект.
Downvoter: Вы хотели бы указать причину? Это хорошо написанный вопрос и касается того, что новые программисты на питоне не знакомы. – inspectorG4dget
Я думаю, что некоторые люди считают его подходящим для вопросов, которые они считают слишком простыми, по своему усмотрению. Как будто это неправильно для новичка, чтобы спросить законного вопроса новичков. Не все начинают знать все правильные условия для поиска правильного ответа. Я подтверждаю, что это хорошо написанный вопрос и не достоин нисходящего хода. – jdi
Похоже, я видел внезапное распространение этого конкретного вопроса (не понимая, как работают параметры и значения параметров), как здесь, так и в других местах в Интернете. Интересно, кто-то просто потушил плохой учебник? –