Я читал, что при написании функций полезно скопировать аргументы в другие переменные, потому что не всегда ясно, является ли переменная неизменной или нет. [Я не помню, где так не спрашивают]. Я писал функции в соответствии с этим.Путаница относительно изменяемых и неизменных типов данных в Python 2.7
Как я понимаю, создание новой переменной требует некоторых накладных расходов. Он может быть небольшим, но он есть. Так что должно быть сделано? Должен ли я создавать новые переменные или не содержать аргументы?
Я прочитал this и this. У меня есть путаница относительно того, почему float и int являются неизменными, если их можно легко изменить?
EDIT:
Я пишу простые функции. Я отправлю пример. Я написал первый, когда после того, как я прочитал, что в Python аргументы должны быть скопированы, а второй после того, как я понял, что это не нужно.
#When I copied arguments into another variable
def zeros_in_fact(num):
'''Returns the number of zeros at the end of factorial of num'''
temp = num
if temp < 0:
return 0
fives = 0
while temp:
temp /= 5
fives += temp
return fives
#When I did not copy arguments into another variable
def zeros_in_fact(num):
'''Returns the number of zeros at the end of factorial of num'''
if num < 0:
return 0
fives = 0
while num:
num /= 5
fives += num
return fives
Вопросы, к которым вы связались (в частности, первый), показывают, что float и int не могут быть изменены. Кроме того, неверная копия аргументов функции не является хорошей практикой. Можете ли вы привести пример кода, который вы пишете? – BrenBarn
Первый ответ на вопрос показывает, как легко изменить параметры int и float. Очевидно, они могут быть изменены иначе, какими будут их использование? –
@Zel Неправильно. Каждое целое число является неизменным объектом. Каждый поплавок является неизменным объектом. Операции с неизменяемыми номерами возвращают новые неизменные числа. Присвоение неизменяемого числа изменяемой переменной (ссылка на объект) мутирует ссылку, чтобы указать на новый неизменяемый номер. И т. Д. Дело в том, что вы никогда не сможете редактировать номер и наблюдать его изменения с помощью двух переменных, указывающих на него, поскольку числа неизменяемы. – Patashu