1 / 1 / 0
Регистрация: 16.01.2024
Сообщений: 1

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

26.01.2024, 13:48. Показов 1069. Ответов 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
5233 / 3478 / 1175
Регистрация: 21.03.2016
Сообщений: 8,305
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
38179 / 21114 / 4307
Регистрация: 12.02.2012
Сообщений: 34,721
Записей в блоге: 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,327
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
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
27.01.2024, 19:18
Цитата Сообщение от idealist Посмотреть сообщение
Чем мотивируете?
фен-шуем питона
"Явное лучше, чем неявное."
1
 Аватар для volodin661
6791 / 2288 / 348
Регистрация: 10.12.2013
Сообщений: 7,897
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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru