Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 594

Записать новое Значение по Ссылке

06.08.2023, 09:57. Показов 1011. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
- Здоровья Всем!
Простейший пример:

Python
1
2
3
a: int = 1
ref = id(a)
print(f'  >>>  a: {a},  ref: {ref}')
- a - Переменная с Целым Значением.
- ref - Ссылка на переменную 'a' (адрес в Памяти).

- Скажите, пожалуйста, можно ли по этой Ссылке (адресу в Памяти) - ref положить новое целое Значение 'new_val'?
Т.е. изменить Значение Переменной-'a', не прибегая к ПЕРЕЗАПИСИ самой Переменной-'a':
a = new_val
- Можно ли поменять Значение Переменной-'a' ИСПОЛЬЗУЯ ТОЛЬКО Переменную-'ref',
но НЕ ИСПОЛЬЗУЯ саму Переменную-'a'?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.08.2023, 09:57
Ответы с готовыми решениями:

Как записать в файл новое значение?
Есть файл config.txt с содержимым: profile_id:134 counter:345 Как записать цифры в переменные, увеличить их на 1, и перезаписать...

Как записать новое значение в память на Visual Basic 6.0 ?
Уважаемые эксперты, подскажите пожалуйста, как на Visual Basic 6.0 можно записать новое значение в память. Например: Чтобы...

Как в группе значений выделить 1,2,3 значение и записать в новое поле
Уважаемые специалисты! Есть таблица . На базе ее формируется конечный запрос2. В нем собрана Сумма 5 лучших результатов каждого...

16
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
06.08.2023, 12:48
Цитата Сообщение от Staut Посмотреть сообщение
Ссылка на переменную 'a' (адрес в Памяти).
Шта???
1
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
06.08.2023, 13:30
Цитата Сообщение от Staut Посмотреть сообщение
можно ли по этой Ссылке (адресу в Памяти) - ref положить новое целое Значение 'new_val'?
Ну, в питоне нет указателей, поэтому этот адрес некому передать. Хотя имена объектов и есть замаскированные указатели.
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38171 / 21106 / 4307
Регистрация: 12.02.2012
Сообщений: 34,697
Записей в блоге: 14
06.08.2023, 14:41
Staut, 1) все запрашиваемое совершенно не соответствует идеологии Питона 2) для чего это нужно?
1
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
06.08.2023, 14:46
Цитата Сообщение от Catstail Посмотреть сообщение
для чего это нужно?
Ну, чтобы изучить что-то - надо это пощупать со всех сторон, так что сия пытливость мне, например, понятна.
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38171 / 21106 / 4307
Регистрация: 12.02.2012
Сообщений: 34,697
Записей в блоге: 14
06.08.2023, 14:49
Цитата Сообщение от idealist Посмотреть сообщение
надо это пощупать со всех сторон
- чтобы изучить законы электромагнетизма, не стоит лазить гвоздем в розетку...
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
06.08.2023, 14:56
Цитата Сообщение от idealist Посмотреть сообщение
надо это пощупать со всех сторон
Ну, чтобы ЭТО пощупать, нужно идти в ассемблер/си, а никак не в питон

Добавлено через 1 минуту
Ну а ежели сильно приперло - есть ctypes. Но это для уже понимающих, соответственно опять не туда
3
Любознательный
 Аватар для YuS_2
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,214
06.08.2023, 15:01
Цитата Сообщение от Staut Посмотреть сообщение
Ссылка на переменную 'a' (адрес в Памяти).
Это идентификатор

Цитата Сообщение от Staut Посмотреть сообщение
Можно ли поменять Значение Переменной-'a'
К неизменяемым относятся целые числа (int), числа с плавающей запятой (float), булевы значения (bool), строки (str), кортежи (tuple). К изменяемым — списки (list), множества (set), байтовые массивы (byte arrays) и словари (dict).
ссылка для чтения
2
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 594
06.08.2023, 17:39  [ТС]
- Извините за то, что исчез на какое-то время. Спасибо за критику! Я еще только учу Python.
- idealist прав, все это от пытливости!
- Я как всегда перевожу готовый код с Паскаля (или C++) на Python, а там есть функции:
inc(var) и dec(var). Смысл этих функций, думаю, ясен из их названий. В C++ это делается
очень просто. Передается параметр по Ссылке и все, изменяй его внутри функции как хочешь.
- А вот думаю можно ли что-то подобное сделать в Python?
- Спасибо iSmokeJC, посмотрю по пристальнее на - ctypes.
- YuS 2 - спасибо за ссылку! Почитаю. Все умнее стану ...
Спасибо Всем!
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38171 / 21106 / 4307
Регистрация: 12.02.2012
Сообщений: 34,697
Записей в блоге: 14
06.08.2023, 17:52
Цитата Сообщение от Staut Посмотреть сообщение
inc(var) и dec(var). Смысл этих функций, думаю, ясен из их названий. В C++ это делается
очень просто.
- чем это лучше банального
Python
1
v+=1
???
1
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 594
06.08.2023, 18:01  [ТС]
- Абсолютно ничем, Catstail. Просто в том коде, который я переводил, эти функции
используются миллион раз и по всяким поводам. Побоялся запутаться или сделать механическую
ошибку при перекодировании.
- А потом просто задумался, а можно ли сделать такое в Языке-Python,
он ведь, говорят, может ВСЕ!
1
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
06.08.2023, 19:48
Цитата Сообщение от Staut Посмотреть сообщение
Передается параметр по Ссылке и все, изменяй его внутри функции как хочешь.
- А вот думаю можно ли что-то подобное сделать в Python?
Для изменяемых типов (например, множеств, словарей, списков) это возможно, в питоне как раз присваивание объекта изменяемого типа создает ссылку, а не копию. При модификации объекта ссылка сохраняется. Но при присваивании ссылке нового объекта она уже перенаправляется на него.
Пример:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
a = [1]
b = a
b[-1] += 1
print(a)
# [2]
c = b
c[-1] += 1
print(a)
# [3]
d = c
d = [33]
print(a)
[3]
1
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 594
07.08.2023, 08:05  [ТС]
- Большое спасибо idealist! К сожалению пока прочел Вашу статью только поверхностно
(не было времени прочесть и вдуматься). Но уже понял, что то, о чем я думал сначала,
в Языке-Python НЕ РАБОТАЕТ СОВЕРШЕННО.
- Целое число, которое возвращает служебная функция - id() хоть и отражает как-то Адрес переменной
в Памяти, но СОВЕРШЕННО - НЕ Ссылка (в смысле Языка-C++)!
- Ваш последний пример тоже показателен! Есть над чем подумать и поэкспериментировать.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38171 / 21106 / 4307
Регистрация: 12.02.2012
Сообщений: 34,697
Записей в блоге: 14
07.08.2023, 08:41
Staut, "гнуть" один язык под другой (Питон под C++, к примеру) - порочная практика. С++ - по своим концепциям язык уникальный. К С++ достаточно близок C, но в нем нет классов...

Другие языки можно сгруппировать по ряду признаков. Можно выстраивать некие параллели между Питоном и Джавой (отсутствие опасных указателей, автоматическая уборка мусора). Поэтому, прежде чем "экспериментировать", неплохо выяснить, что возможно в данном языке, а что - нет. "Границы моего языка - это границы моего мира" (Л.Витгенштейн). И не пытаться "прыгнуть выше себя".
3
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
07.08.2023, 09:40
Цитата Сообщение от Staut Посмотреть сообщение
- Целое число, которое возвращает служебная функция - id() хоть и отражает как-то Адрес переменной
в Памяти, но СОВЕРШЕННО - НЕ Ссылка (в смысле Языка-C++)!
Да, адресами напрямую в питоне не оперируют, но я же уже вам показывал, что ссылки в питоне - это обычное дело, и надо специально прилагать усилия, чтобы при присваивании объекта изменяемого типа получить не ссылку, а именно копию.
Так что ваша цель - возвращать результат из функции через параметр - в питоне реализуема, но только для изменяемых типов.
Пример:
Python
1
2
3
4
5
6
7
8
9
def fun(arr):
    arr.pop()
 
arr = [1,2,3]
print(arr)
# [1, 2, 3]
fun(arr)
print(arr)
# [1, 2]
2
98 / 81 / 14
Регистрация: 26.07.2013
Сообщений: 594
08.08.2023, 08:59  [ТС]
- Все правильно, idealist. Теперь все более менее ясно понимаю. И Ваши примеры относятся к ИЗМЕНЯЕМЫМ объектам.
Я же замахнулся на НЕИЗМЕНЯЕМЫЕ объекты (целого типа)! А это за пределами возможностей!
- Вы Catstail и (Л. Витгенштейн) абсолютно правы! Спасибо Вам всем, помогли разобраться! Нельзя выходить
за "границы возможностей" языка.
- Но как узнать эти "границы возможностей"? Наверно есть 2 способа:
1.- Очень много читать, 2.- Задавать вопросы и экспериментировать. В силу легендарной лености программистов
1-й способ используется очень редко ...
1
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
08.08.2023, 09:14
Цитата Сообщение от Staut Посмотреть сообщение
Я же замахнулся на НЕИЗМЕНЯЕМЫЕ объекты (целого типа)! А это за пределами возможностей!
Ну, при крайней нужде никто не мешает сымитировать целое с помощью списка (вместо i применить [i], к примеру) или свой класс написать.
Цитата Сообщение от Staut Посмотреть сообщение
и (Л. Витгенштейн) абсолютно правы!
А это еще хто??!!
Цитата Сообщение от Staut Посмотреть сообщение
Но как узнать эти "границы возможностей"?
А если учебник почитать?

Добавлено через 4 минуты
Цитата Сообщение от Staut Посмотреть сообщение
- Но как узнать эти "границы возможностей"? Наверно есть 2 способа:
1.- Очень много читать, 2.- Задавать вопросы и экспериментировать. В силу легендарной лености программистов
1-й способ используется очень редко ...
Ну, программисту надо много знать и все время быть в курсе, иначе он не программист, так что в получении нужной информации нет возможности лениться. А экспериментировать в любом случае необходимо, мне кажется без этого в программировании никак.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.08.2023, 09:14
Помогаю со студенческими работами здесь

Как записать новое значение в ячейку записи mdb-файла?
Есть глобальная переменная sName. Соответствует полю Name Columns(1) DataGridView и в Columns(1) таблицы из mdb-файла Есть DataGridView,...

Как перейти по ссылке, которая открывается в newWindow, не открывая новое окно IE
Собственно, как перейти по ссылке, которая открывается в newWindow, не открывая новое окно IE? Когда вставляю этот кусок private void...

javascript.По ссылке должно открывается новое окно с картинкой. А закрываться - щелчком в окне
Привет! У меня вопрос по javascript. По ссылке должно открывается новое окно с картинкой. А закрываться - щелчком в окне. как...

Как одним кликом по ссылке внутри модального окна закрыть текущее окно и открыть новое?
Приветствую. Кто знает, подскажите как нажав на ссылку внутри модального окна закрыть текущее окно и запустить открытие нового окна на этой...

Каким оператором можно изменить значение поля Fa объекта а на новое ненулевое значение?
Правильный ли ответ? Дано следующее описание: T = class Fa: real; constructor Create(p: real); end; var a:T; Изменить...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru