С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
33 / 59 / 6
Регистрация: 22.01.2017
Сообщений: 640

О функциях

12.04.2017, 11:39. Показов 698. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Например в Паскале я могу передать аргумент просто(создается копия которая не имеет отношения к передоваемой переменной) или по ссылке(тогда переменная которая использовалась при вызове будет изменяться) как такое делается в Python? То есть строки при передачи не изменяются, а списки - меняются.Я наверно плохо объяснил, вот наглядние
Pascal
1
2
3
4
5
function Proverka(arg: string):boolean
agr := 'Новое значение'
//вызов
message = '213'
Proverka(message)
При этом message не измениться
Pascal
1
function Proverka(var arg:string)
Message изменится

в Python же
Python
1
2
3
4
5
6
7
def Proverka(string1):
    string1 = '123'
 
string1 = '5'
Proverka(string1)
print(string1)
#string1 так и останеться 5
Но при списке
Python
1
2
3
4
5
6
def Proverka2(list1):
    list1.append('Proverka')
    list1[0] = '3'
lis = ['1','2']
Proverka2(lis)
print(lis)
Измениться! Как это контролировать?

Добавлено через 6 минут
Выходит выход это
Python
1
2
3
4
def Proverka(string1):
return '123'
 
string1 = Proverka(string1)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.04.2017, 11:39
Ответы с готовыми решениями:

@ В функциях
Здраствуйте, у меня во время изучения такой темы как создание модулей возник вопрос. Я не знаю как создать такую конструкцию с @ как в...

Заблудился в функциях
Привет ребят! Начал давеча изучать python, но вот чет застрял на одном моменте.. <br> Пните в нужную сторону.. Идея была...

Логирование в функциях
Так-с, значит решил я разобраться как логирование в пайтон реализовано. Тестил по всякому и пришёл значит-с к такой конструкции: ...

4
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
12.04.2017, 11:45
Цитата Сообщение от Luke0208 Посмотреть сообщение
То есть строки при передачи не изменяются, а списки - меняются.Я наверно плохо объяснил, вот наглядние
Есть только 1 вариант, это создать копию объекта и передавать ее. Смотри на модуль copy и функцию deepcopy для создания полной копии и copy если нужна поверхностная копия.
0
 Аватар для pashtet-kun
135 / 120 / 37
Регистрация: 30.09.2012
Сообщений: 400
12.04.2017, 12:23
Не очень понятно что требуется, если достаточно поверхностной копии списка, то передавай список в качестве аргумента в виде копии:
Python
1
Proverka2(lis[:])
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
12.04.2017, 17:06
Цитата Сообщение от Luke0208 Посмотреть сообщение
Как это контролировать?
Просто помнить, что в python'е практически все передается по ссылке (в исходниках сплошные PyObject* - указатели на объект). Такая вот экономия ресурсов. Даже числа могут быть ссылочными, поскольку в определенном диапазоне они кэшируются.
Просто есть небольшое отличие в поведении изменяемых и неизменяемых типов.
Маленькая цитата:
"Изменяемые (mutable) типы отличаются лишь тем, что при помощи методов можно модифицировать их внутреннее состояние (при этом ссылка на объект не меняется).
Неизменяемые (immutable) типы точно также передаются по ссылке, просто у них нету методов, которые модифицируют внутренне состояние объекта. Поэтому невозможно сделать так, чтобы по старому адресу оказался другой объект."
Ну а как поступать с изменяемыми объектами - указали выше.
0
 Аватар для Semen-Semenich
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
12.04.2017, 19:38
Цитата Сообщение от Luke0208 Посмотреть сообщение
def Proverka(string1):
* * string1 = '123'
string1 = '5'
Proverka(string1)
print(string1)
потомк как это две разные переменные первая string1 = '5' это глобальная с значением 5 а вторая string1 это локальная в функции которой ты присваиваешь значение 123 а в принт выводишь глобальную переменную а теперь наглядно
Python
1
2
3
4
5
6
7
8
def Proverka(string1):
    string1 = '123'
    return string1
 
string1 = '5'
print(Proverka(string1))
# результат функции =123
print(string1)# глобальной переменной результат = 5
и так
Python
1
2
3
4
5
6
7
def Proverka(string1):
    string1 = '123'
    return string1
 
string1 = '5'
string1 = Proverka(string1)
print(string1) # вывод 123
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.04.2017, 19:38
Помогаю со студенческими работами здесь

Проверка на число в функциях
Доброго времени суток. У меня возник вопрос можно как-то совершить проверку по переменной age, чтобы я вводил только число. Иначе мне бы...

Калькулятор, основанный на функциях
Хочу написать калькулятор на функциях, т.к мой другой калькулятор на условиях меня не совсем устраивает. Но возникла проблема, хочу...

Локальность переменных в функциях
Я столкнулся с вопросоами связанными с локальностью переменных в Python: 1)в теории переменные в функции должны быть локальны, но см....

Область видимости переменных в функциях
не понимаю почему функция : def example(arr): arr = "ТАК ВЕДЬ БЫТЬ НЕ ДОЛЖНО" arr = mirror(arr) print(*arr) ...

Получить индекс элемента в функциях min/max
привет друзья! если я определяю мин. значение в списке a = min(a) как получить индекс мин. элемента в данном случае: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru