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

О функциях

12.04.2017, 11:39. Показов 707. Ответов 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
5234 / 3479 / 1175
Регистрация: 21.03.2016
Сообщений: 8,306
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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru