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

Как в одной строке объявить переменную и в ней же к этой переменной обратитЬся

26.01.2024, 13:48. Показов 1065. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
йоу, я помешан на бесполезном и некрасивом сокращении программ, очень нужен совет, как в одной строке объявить переменную и в ней же к этой переменной обратится обратиться?
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.01.2024, 13:48
Ответы с готовыми решениями:

Можно как-то объявить переменную, чтобы к ней можно было обратиться с любой из форм?
У меня такой вопрос) Пишу курсовую работу, состоит из 3 форм, есть пару переменных, которые нужно сохранять при переходе на другую форму....

Где и как объявить переменную видимую только из одной формы и из размещаемых на ней фреймов?
Есть булева переменная, говорящая о том что на каком-то из компонентов формы или компонентов фрейма произошли изменения, требующие...

Как объявить переменную, чтобы к ней был доступ в дочерних формах?
Добрый день. Помогите начинаещему на C# программисту. Пишу приложение WinForm с несколькими формами. Как объвить переменную, чтобы она...

15
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
26.01.2024, 14:13
Цитата Сообщение от 322spaten Посмотреть сообщение
не помогать
ОК, не будем
4
 Аватар для Semen-Semenich
5228 / 3474 / 1174
Регистрация: 21.03.2016
Сообщений: 8,301
26.01.2024, 17:19
да хоть пол кода в одну строку
Python
1
a = 2; a *= 2; print(a); b = 3; c = 5; print(a+b+c)
сокращай )))
2
240 / 189 / 32
Регистрация: 02.07.2020
Сообщений: 142
26.01.2024, 18:35
Если под одной строкой имеется в виду одно выражение, то walrus operator (python 3.8+) может "помочь" в вашем безумии

Python
1
x = (a := b * b) + a
примерно то же самое, что
Python
1
2
a = b * b
x = a + a
Другой вариант - лямбда выражения
Python
1
(lambda a: a + a)(b * b)
Но если вам хочется болезненного сокращения кода, чтобы... а почему бы и нет?
я бы обратил внимание на язык Perl (со всем уважением к языку).
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
26.01.2024, 18:44
Цитата Сообщение от 322spaten Посмотреть сообщение
как в одной строке объявить переменную
Ну, питон интерпретируемый язык, поэтому в нем не существует объявлений переменных. Переменная сразу создается, путем связывания ее имени с ее значением.
Вот так можно:
Python
1
2
c = (a := 3) + (b := 4)
print(a,b,c)
extrn, как мы хором прямо!
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,711
Записей в блоге: 14
26.01.2024, 19:13
Цитата Сообщение от idealist Посмотреть сообщение
Ну, питон интерпретируемый язык, поэтому в нем не существует объявлений переменных.
- извините, но не поэтому. А потому, что Питон - язык с динамической типизацией.
2
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
27.01.2024, 15:42
Цитата Сообщение от Catstail Посмотреть сообщение
извините, но не поэтому. А потому, что Питон - язык с динамической типизацией
А, да, пардон. Однако обычно компилируемый язык имеет статическую типизацию, чтобы даром не компилировать, если в программе ошибки с типами.
1
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,323
27.01.2024, 16:49
Цитата Сообщение от idealist Посмотреть сообщение
:=
то есть это работает как "="?

Добавлено через 12 минут
Цитата Сообщение от idealist Посмотреть сообщение
:=
для чего это может понадобится как не для
Цитата Сообщение от 322spaten Посмотреть сообщение
сокращении программ
??
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
27.01.2024, 17:37
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
то есть это работает как "="?
Ну да.
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
для чего это может понадобится как не для
Цитата 322spaten сокращении программ??
Да, это синтаксический сахар по сути.
1
240 / 189 / 32
Регистрация: 02.07.2020
Сообщений: 142
27.01.2024, 18:17
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
для чего это может понадобится как не для сокращении программ
Для красивого (вкусовщина, но все же) и полезного сокращения программ.

Например, до его введения, обычно делали так

Python
1
2
3
4
5
6
lines = []
line = input()
 
while line != '':
    lines.append(line)
    line = input()
что нарушает DRY. Либо так

Python
1
2
3
4
5
6
7
8
9
lines = []
 
while True:
    line = input()
 
    if line == '':
        break
 
    lines.append(line)
Что у кого-то может вызвать клаустрофобию нарушает читабельность алгоритма. Теперь часто делают так

Python
1
2
3
4
lines = []
 
while (line := input()) != '':
    lines.append(line)
Что тоже не идеально, но претендует на звание меньшего зла.

И да, конкретно для этой задачи есть вариант еще проще

Python
1
lines = list(iter(input, ''))
но ее я привел в пример для простоты. Разумеется, есть более сложные случаи с похожим решением, не имеющие настолько простых обходных путей.
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
27.01.2024, 18:27
Цитата Сообщение от extrn Посмотреть сообщение
Python
1
2
3
4
lines = []
 
while (line := input()) != '':
    lines.append(line)
Ну, можно короче:
Python
1
2
3
4
lines = []
 
while line := input('->'):
    lines.append(line)
0
240 / 189 / 32
Регистрация: 02.07.2020
Сообщений: 142
27.01.2024, 18:38
Цитата Сообщение от idealist Посмотреть сообщение
Ну, можно короче:
Можно, но сам я стараюсь избегать неявного преобразования к bool, чего и вам советую, хоть и не настаиваю.
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
27.01.2024, 19:00
Цитата Сообщение от extrn Посмотреть сообщение
сам я стараюсь избегать неявного преобразования к bool
Чем мотивируете?
0
240 / 189 / 32
Регистрация: 02.07.2020
Сообщений: 142
27.01.2024, 19:12
Цитата Сообщение от idealist Посмотреть сообщение
Чем мотивируете?
Слишком много сущностей приводится к bool со значением False.

Иногда даже таким можно не побрезговать
Python
1
if x is not False:
если надмозг, от которого вы получили значение x, решил, что в случае ошибки, записать None в качестве ответа, идея более здравая, чем воспользоваться исключением. А то и вовсе забыл return.
0
Любознательный
 Аватар для YuS_2
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
27.01.2024, 19:18
Цитата Сообщение от idealist Посмотреть сообщение
Чем мотивируете?
фен-шуем питона
"Явное лучше, чем неявное."
1
 Аватар для volodin661
6688 / 2279 / 348
Регистрация: 10.12.2013
Сообщений: 7,888
28.01.2024, 15:25
Цитата Сообщение от extrn Посмотреть сообщение
Но если вам хочется болезненного сокращения кода, чтобы... а почему бы и нет?
я бы обратил внимание на язык Perl (со всем уважением к языку).
И что тут болезненного ?

Perl
1
print( $a = 15 )

( но сама идея оставить в покое жирного земляного червяка и переключиться на Perl отличная )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.01.2024, 15:25
Помогаю со студенческими работами здесь

Как объявить переменную, чтобы получить к ней доступ из разных методов
такая ошибка выдается: Error 1 The type or namespace name 'var' could not be found (are you missing a using directive or an assembly...

Как объявить переменную с именем, взятой из другой переменной
как объявить переменную с именем взятой из другой переменной ? задача следуящая: private void pictureBox1_Click(object sender,...

Как объявить переменную, имя которой находится в другой переменной
В переменной X находится имя другой переменной D. Требуется объявить эту переменную как тип STRING. Присвоить что-нибудь и напечатать....

Как обратиться к строке ТЗ (в цикле) чтобы посчитать количество символов в ней
Как обратиться к строке ТЗ (в цикле) чтобы посчитать количество символов в ней Добавлено через 18 секунд Точнее к строкам ТЗ

Как обратиться к каждой цифре в числе (в одной переменной)
Допустим есть следующая задача: Дано целое положительное число N≤10100. Необходимо найти наибольшее количество подряд идущих...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
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