Вы не можете перезаписать значение параметра. То есть вы не можете изменить его, чтобы ссылаться на другой объект. Однако вы можете изменить объект. В Python есть старая нить на основе пропущенных значений и семантики pass-by-reference в Python: https://stackoverflow.com/a/986145/399047
Например, вы можете добавить элементы в список, который передается как параметр. Следующий код:
def func(a_list):
a_list.append("some value")
l = [1,2,3]
print l
func(l)
print l
даст:
[1,2,3]
[1,2,3,"some value"]
В отличие от этого, строка, не может быть изменен. Следующий код:
def func2(a_str):
a_str += "suffix"
s = "test"
print s
func2(s)
print s
даст:
"test"
"test"
Моей рекомендацию, если у вас есть хороший повод, чтобы избежать мутируют ваши входные параметры и возвращают модифицированный объект вместо этого. Побочные эффекты могут создавать беспорядочный код.
Если в конце всего этого вы действительно хотите изменить свой входной параметр, одним из методов было бы обернуть параметр кода внутри другого объекта. например
def icaocode(code_list):
input_code = code_list[0]
[...]
# do something to input_code, assign result to
# output_code
[...]
code_list[0] = output_code
Тогда вы могли бы назвать с:
code_list = [code]
icaocode(code_list)
Тем не менее, этот код уродливый мне, пахнет что-то ужасное, и я не рекомендую.
У вас нет. Python передается по значению. – geoffspear
Что это будет? Похоже, код будет тем же значением ... – thegrinner
Почему бы просто не вернуть результаты и не переписать x в вызывающей функции? – mtahmed