Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
4 / 5 / 3
Регистрация: 03.11.2012
Сообщений: 173

Количество ссылок на список

10.02.2019, 11:17. Показов 1382. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вывод
Python
1
2
3
>>> a = [1,2,3]
>>> sys.getrefcount(a)
2
объясняется тем, что параметр функции сам добавляет еще одну ссылку на список.
Но идем дальше:
Python
1
2
3
4
>>> a = [1,2,3]
>>> f = lambda x: print(sys.getrefcount(x))
>>> f(a)
4
Откуда здесь уже 4 ссылки?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.02.2019, 11:17
Ответы с готовыми решениями:

Вывести список ссылок
А еще такая проблема: Нужно вывести список ссылок <HTML> <HEAD> <title>Мои интересы</title> <Script LANGVAGE =...

Выпадающий список ссылок
Всем привет.хотелось бы узнать какое свойство нужно прописать чтобы при наведение на ссылку меню раскрывалось с отступом после которого...

Список ссылок по домену
Сабж. Домен - окнавест.ру По запросу окнавест (oknavest) Выдаеться на первом месте мой сайт и вот такой вот списочек Почта ...

9
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
11.02.2019, 02:42
Еще две добавляют локальные переменные создаваемые при вызове в функции f и в функции lambda, которые ссылаются на тот же объект, что и переменная a .
0
4 / 5 / 3
Регистрация: 03.11.2012
Сообщений: 173
11.02.2019, 02:50  [ТС]
Цитата Сообщение от Viktorrus Посмотреть сообщение
при вызове в функции f и в функции lambda
Ну может лямбду я здесь и зря нарисовал. Ладно, давайте тогда так:
Python
1
2
3
4
5
>>> a = [1,2,3]
>>> def f(x): print(sys.getrefcount(x))
... 
>>> f(a)
4
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
11.02.2019, 02:51
А зачем Вам эти ссылки? Питон сам их отслеживает и убирает мусор автоматически.
0
4 / 5 / 3
Регистрация: 03.11.2012
Сообщений: 173
11.02.2019, 02:55  [ТС]
Цитата Сообщение от Viktorrus Посмотреть сообщение
А зачем Вам эти ссылки? Питон сам их отслеживает и убирает мусор автоматически.
Да ради интереса просто.
Думал, здесь логика какая-то должна быть в подсчете ссылок. Но оказывается многое от интерпретатора зависит.
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
11.02.2019, 03:03
print() это тоже функция, значит это она создает четвертую ссылку. А в предыдущем примере f и lambda видимо одна и та же функция, на которую ссылаются переменная f и безымянная функция создаваемая лямбдой, ведь функция это объект питона в памяти.

Добавлено через 3 минуты
кстати когда я у себя проверял предыдущий пример, я это делал в файле и добавлял еще один print(f(a)). Так у меня выводилось 5 ссылок. Это значит мой дополнительный print добавлял еще одну ссылку, ведь в аргументе print косвенно присутствует а .
1
4 / 5 / 3
Регистрация: 03.11.2012
Сообщений: 173
11.02.2019, 13:13  [ТС]
Тогда как это объяснить? Добавление еще одной функции не влияет на результат:
Python
1
2
3
4
5
>>> g = lambda x:x
>>> def f(x): print(g(sys.getrefcount(x)))
... 
>>> f(a)
4
Добавлено через 9 часов 54 минуты
Конечно, если сам список передавать аргументом в функцию, то кол-во ссылок будет увеличиваться, но почему-то на 2 штуки.
Еще интересно, что у кортежа кол-во ссылок на 1 больше.
Python
1
2
3
4
5
6
7
8
import sys
a = (1,2,3,4)
b = [1,2,3,4]
g = lambda y: sys.getrefcount(y)
h = lambda y: g(y)
def f(x): return h(x)
print(g(a), h(a), f(a), sys.getrefcount(a))
print(g(b), h(b), f(b), sys.getrefcount(b))
Добавлено через 54 секунды
Code
1
2
(5, 7, 9, 3)
(4, 6, 8, 2)
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
11.02.2019, 16:13
Извините меня, но я не вижу необходимости разбираться с внутренней работой питона, когда у меня в этом нет необходимости. Он делает что надо и ладно. Удачи Вам.
0
4 / 5 / 3
Регистрация: 03.11.2012
Сообщений: 173
12.02.2019, 00:11  [ТС]
Ну иногда имеет смысл разбираться, если нужно учитывать производительность и потребление ОЗУ. Но не всегда конечно, зависит от ситуации.
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
12.02.2019, 01:25
spyphy, Ну это зависит от задач, которые каждый для себя ставит. Я всегда был больше постановщиком задач, чем профессиональным программистом. Моя цель создать алгоритм и написать программу, которая бы в принципе решала задачу, не заботясь об оптимизации и скорости ее выполнения. Вопросы оптимизации я оставляю другим, профессиональным программистам. Особенно сейчас, когда я на пенсии и для меня программирование на питоне скорее хобби, чем профессия. Одним пенсионерам доставляет удовольствие путешествовать и узнавать новые места, а для меня доставляет удовольствие осваивать новое в питоне (так как я всю жизнь учился и люблю учиться) и помогать начинающим осваивать питон, так как я уже освоил первую книгу Лутца.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.02.2019, 01:25
Помогаю со студенческими работами здесь

Составьте список ссылок
Составьте список ссылок (либо с тегами <OL>/<UL>) на рисунки каких-либо предметов, по щелчку на которые на этой же веб-странице...

Список ссылок в диве
Внутри ячейки возникла необходимость сделать список ссылок,то есть внтутри <td> я хочу сделать несколько ссылок, только каждая...

Список ссылок в одну строку
Здравствуйте, помогите пожалуйста Есть код <ul> <li><a href="#">Авторы</a></li> <li><a...

Выделить список ссылок на изображения
Здравствуйте есть произвольный список текста (база данных на 65 мегабайт) инф. сообщение</a><!--,...

Как создать список ссылок?
При нажатии на кнопку рисуется прямоугольник на сцене(слот slotAdd). не пойму, как сделать список ссылок на все созданные объекты....


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru