Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.54/54: Рейтинг темы: голосов - 54, средняя оценка - 4.54
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755

Как работают функции?

06.10.2020, 19:17. Показов 12146. Ответов 138
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как подправить, чтобы в функцию tr передавался параметр из функции buba, вводимый пользователем?
Python
1
2
3
4
5
6
7
8
9
10
11
12
def buba():
    print("Введите число ", end = '')
    num = int(input())
    print(num)
 
        
def tr(num):
    hi = num+1
    print(hi)
 
buba()
tr()
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.10.2020, 19:17
Ответы с готовыми решениями:

Как работают функции?
Как заменить global на что то другое? def getInput(): global k k=int(input('Введите, сколько у Вас есть ')) getInput() ...

Как работают встроенные функции?
Почему первая строка рисует сердечко, а вторая выдает ошибку?print(chr(3)) print(chr(10045)) >>> print(chr(3)) ♥ ...

Как работают функции в python?
Извините за такой тупой вопрос, но мне нужно написать небольшой скрипт на питоне. и я не помню, как именно работают функции, помню что...

138
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
12.06.2021, 14:39
Студворк — интернет-сервис помощи студентам

Не по теме:

Цитата Сообщение от Arsegg Посмотреть сообщение
а что по вакансиям Rust Developer? Сложно найти работу?
Не знаю, я на plsql вкалываю.

Раз воскресили тему про раст, ещё фичи перечислю:
* переменные не могут быть равны null. Хочешь хранить null - объяви тип переменной, как Optional<T> и обреки себя на ручные проверки на null при КАЖДОМ использовании.
* исключений нет, как и в Си тебе придётся обрабатывать все ошибки (тип Result<T, E>). Не хочешь - можешь не обрабатывать и писать везде .unwrap(), но тогда при ошибке программа будет паниковать и завершаться. Паника, как исключение, раскручивает стек и корректно завершает программу. Поймать панику нельзя, но если сильно хочется - можно (например, внутри потока). Есть сахар для обработки ошибок, раньше был макрос try!, теперь оператор ?.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
fn func() -> Result<i32, ParseIntError> {
    let result = match "42".parse::<i32>() {
        Ok(v) => v,
        Err(e) => return Err(e),
    };
    Ok(result + 1)
}
fn func2() -> Result<i32, ParseIntError> {
    let result: i32 = "42".parse()?;  // сахарок
    Ok(result + 1)
}
fn func3() -> i32 {
    "42".parse().unwrap() + 1  // забиваем на обработку ошибок
}
* перегрузка функций / методов - ок, не проблема.
* шаблонные функции / методы - ок, всяко лучше чем в С++, честная компиляция и без всяких виртуальных функций и таблиц вызовов. То есть есть функция func(arg: T), которую вызывают для типов T=String и T=i32 - компилятор честно создаст две функции и, возможно, заинлайнит их.
* возвратный полиморфизм. Не самое удачное название, кажется, работает только с шаблонами. Когда методов с одним именем несколько, и компилятору нужно подсказать, какой тип данных должна вернуть функция.
C#
1
2
let result: i32 = func();
let result: u32 = func();
* затенение переменных - ок, пример выше. Напоминает питон, да?
* if/while/for - обязательные фигурные скобки, часть синтаксиса. Избавляет от ошибок "добавил строку - забыл добавить скобки".
** if/while/for - ВЫРАЖЕНИЯ. Для циклов это имеет мало смысла (они возвращают пустоту ()), а вот if можно писать так:
C#
1
2
3
4
5
6
7
    let result = if (42 == 42) {
        let mut a = 4;
        a += 42;
        a
    } else {
        11
    };



Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от Viktorrus Посмотреть сообщение
Быстрее уже ничего быть не может (при наличие одного и того же железа).
JIT компиляторы с накопленной статистикой с вами не согласятся.



Добавлено через 1 минуту

Не по теме:

Питон, это крупноблочный язык высокого уровня, где одна команда может выполнять большое количество машинных кодов стандартным образом.
Вы не знаете, а чём говорите. Питон не исполняет машинные команды. Почитайте хоть про космпилируемые и интерпретируемые языки. Про виртуальные машину питона…

1
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
12.06.2021, 14:39
так расты, шмасты и прочее, пробовал
Раст простейший "Hello World"-и пляски с бубном, плюнул
хотя и в питоне камушек не меньше, уже и позабылись..
0
12.06.2021, 15:09

Не по теме:

Цитата Сообщение от Рыжий Лис Посмотреть сообщение
JIT компиляторы с накопленной статистикой с вами не согласятся.
Но это все равно при компиляции преобразуется в машинный язык, который можно написать на ассемблере.
Все, что делает компьютер, он выполняет по одному такту (сигналу) за раз. А это машинная команда , которую можно записать как команду ассемблера.
Поэтому, что бы Вы не написали любым способом для работы компьютера, все это будет физически выполнятся в виде машинных кодов, то есть можно описать в виде команд Ассемблера.
Все, о чем Вы говорите, это просто вспомогательные программы для увеличения быстродействия компьютера, но любые программы могут быть записаны на языке ассемблера.
Вы компилируете программу, получаете машинные коды, которые компьютер выполняет. Затем переводите машинные коды в листинг Ассемблера (уже забыл, как эта операция называется:) ). Таким образом получаете исходник на ассемблере той программы которая была разработана на другом языке.
Компилируя этот исходник на Ассемблере, получаете тот же исполняемый файл, что и был изначально.
Но что вам мешает изначально написать тот же код на Ассемблере самому? Только понадобится значительно больше времени. Хотя не исключено, что вы обнаружите места в коде, которые в машинных кодах можно выполнить эффективнее и тем самым повысить быстродействие. Может на миллионную долю секунды:)
Но если этот участок кода повторяется сотни миллионов раз, то вы получаете увеличение производительности программы.:)
Правда ценой больших затрат времени на программирование в машинных кодах (на Ассемблере)

0
12.06.2021, 15:54

Не по теме:

Viktorrus, боюсь, в общем случае, вы не правы.

Цитата Сообщение от Viktorrus Посмотреть сообщение
Но что вам мешает изначально написать тот же код на Ассемблере самому?
Как минимум, нужно написать кучу бойлерплейта для каждой существующей архитектуры (CISC/RISC привет!).
Цитата Сообщение от Viktorrus Посмотреть сообщение
Правда ценой больших затрат времени на программирование в машинных кодах (на Ассемблере)
Именно. В этом нет абсолютно никакого практического смысла.
Цитата Сообщение от Viktorrus Посмотреть сообщение
но любые программы могут быть записаны на языке ассемблера.
Могут и на Brainf*ck'е. А могут и сразу в машиннном коде. :D
Цитата Сообщение от Viktorrus Посмотреть сообщение
Но это все равно при компиляции преобразуется в машинный язык, который можно написать на ассемблере.
Получится тот же самый JIT-компилятор, только в рамках одной программы. Вы же в своих программах не пишете вновь и вновь код по работе, например, с вводом/выводом, а пользуетесь либами.

0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
12.06.2021, 16:13
Столько написал и все сбросилось Поэтому повторю вкратце.

Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Питон не исполняет машинные команды.
Си тоже не исполняет машинные команды.
Компилятор Си преобразует текст из текстового редактора в машинные команды. А исполняет машинные команды процессор компьютера.
Интерпретатор питона, при запуске программы компилирует код в байт-код. Затем интерпретатор, читая байт-код программы, по ходу выполнения программы, каждую команду компилирует в машинные команды, которые затем исполняет процессор. В этом отличие интерпретатора от компилируемых языков.
То есть у питона компиляция из байт-кода в машинные команды, для каждой инструкции программы, происходит по ходу выполнения программы.
Я все больше убеждаюсь, что тем, кто хочет стать хорошим программистом, начинать нужно с изучения железа. Пройти начальный курс электронщика.
Затем изучить основы программирования на языке Ассемблер. И только потом начинать изучать языки более высокого уровня, что бы хорошо понимать как работает компьютер и загружаемые в него программы.
Все, я выхожу из дискуссии.
0
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
12.06.2021, 16:27
Цитата Сообщение от Viktorrus Посмотреть сообщение
Компилятор Си преобразует текст из текстового редактора в машинные команды.
В IR.

Добавлено через 1 минуту
Цитата Сообщение от Viktorrus Посмотреть сообщение
Я все больше убеждаюсь, что тем, кто хочет стать хорошим программистом, начинать нужно с изучения железа. Пройти начальный курс электронщика.
Чтобы стать программистом, нужно учиться на программиста. Чтобы стать электронщиком, нужно учиться на электронщика. Третьего не дано.
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
12.06.2021, 16:27
Цитата Сообщение от Arsegg Посмотреть сообщение
В этом нет абсолютно никакого практического смысла
Смысл в том, что на ассемблере можно написать код работающий более эффективно (быстрее), чем код написанный на других языках. Но это может оправдывать себя только в определенных случаях, например в написании драйверов. Или например хакерских программ, проводящих массированную атаку. Мы ведь уже в ступаем в эпоху кибер-войн.
Я именно это все пытаюсь объяснить, но видимо безрезультатно.
Ладно, удачи.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
12.06.2021, 16:37
Цитата Сообщение от Viktorrus Посмотреть сообщение
атем интерпретатор, читая байт-код программы, по ходу выполнения программы, каждую команду компилирует в машинные команды, которые затем исполняет процессор.
нет
0
12.06.2021, 17:02

Не по теме:

Цитата Сообщение от Arsegg Посмотреть сообщение
а что по вакансиям Rust Developer? Сложно найти работу?
пока мало самих вакашек, но вилки большие сразу, посмотрел на хх.ру. То есть с порога дают больше денег, но устроиться сложно. Но я полагаю что это дело времени. Как дедушка Гвидо похвалил Го и Раст, так и я считаю что за этими языками есть определенное будущее. Если бы я был сейчас студентом с горящим взором, то обратил внимание именно на эти ЯПы (Го, Раст, Питон, но не джаву, не сишарп, не котлин и прочие.)

0
13.06.2021, 09:06

Не по теме:

Цитата Сообщение от Рыжий Лис Посмотреть сообщение
* шаблонные функции / методы - ок, всяко лучше чем в С++, честная компиляция и без всяких виртуальных функций и таблиц вызовов.
Какая здесь связь между шаблонными и виртуальными функциями?
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
То есть есть функция func(arg: T), которую вызывают для типов T=String и T=i32 - компилятор честно создаст две функции и, возможно, заинлайнит их.
В С++ аналогично.
https://compiler-explorer.com/z/Ts6efexee

0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
14.06.2021, 07:54  [ТС]
Не по теме:
Было аля бота на питоне писал, по-приколу, но захват экрана и прочие действия с изображениями делал на Rust ибо на питоне там за секунду времени было (на фрейм), тогда когда от бота охота как миниум 30 фреймов в секунду, или хотябы чтобы он раздуплялся быстро (что на экране происходит).
Источник Игры на Python: да или нет?
0
3750 / 1944 / 613
Регистрация: 21.11.2021
Сообщений: 3,706
07.01.2024, 23:19
Все не читал, а такой ответ не предлагали что ли?
Python
1
2
3
4
5
6
7
8
9
10
11
12
def buba():
    global num
    num = int(input('Введите число: '))
    print(num)
 
def tr():
    hi = num + 1
    print(hi)
 
num = None
buba()
tr()
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
08.01.2024, 06:19
idealist, ваша функция buba плоха по следующим причинам:
* не является чистой функцией
* имеет побочные действия, пишет в глобальную переменную
* потоконебезопасная
* плюс вы теперь всегда должны вызывать функции buba и tr в определённой последовательности или ловить внезапные баги

Очевидно, что правильный вариант был таким:

Python
1
2
3
4
5
6
7
8
9
10
11
def buba() -> int:
    n = int(input('Введите число: '))
    print(n)
    return n
 
def tr(n: int):
    hi = n + 1
    print(hi)
 
num = buba()
tr(num)
1
3750 / 1944 / 613
Регистрация: 21.11.2021
Сообщений: 3,706
08.01.2024, 06:48
Рыжий Лис, ну, у автора противоречие между строками 7 и 11. Я исходил из предположения, что вызовы должны быть именно как в условии.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.01.2024, 08:52
idealist, ты этого автора еще не знаешь?
0
3750 / 1944 / 613
Регистрация: 21.11.2021
Сообщений: 3,706
08.01.2024, 09:28
Цитата Сообщение от iSmokeJC Посмотреть сообщение
ты этого автора еще не знаешь?
Да как-то не сталкивался, а что?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.01.2024, 09:30
idealist, счастливчик
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,755
08.01.2024, 19:16  [ТС]
Все не читал, а такой ответ не предлагали что ли?
Уже не помню, так как это было давно.

Цитата Сообщение от idealist Посмотреть сообщение
Да как-то не сталкивался, а что?
Занимаюсь программированием в виде хобби, с перерывами в несколько месяцев, из-за чего часть нужных конструкций плохо знаю или забываю. Из-за этого бывает, что задаю вопросы, кажущиеся программистам с опытом неуместными для человека, который этим занимается несколько лет. Ещё интересуюсь разными языками программирования и разными технологиями, которые кажутся им избыточными в рамках начального или среднего курса освоения кодинга.
1
3750 / 1944 / 613
Регистрация: 21.11.2021
Сообщений: 3,706
08.01.2024, 20:21
Цитата Сообщение от supmener Посмотреть сообщение
Ещё интересуюсь разными языками программирования и разными технологиями
Да, я смотрю вы весь форум практически читаете!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.01.2024, 20:21

Не работают некоторые функции php (phpinfo), простые конструкции типа for - работают
Здравствуйте. Предыстория такова - стоял и работал почти год openserver, знать не знал проблем. Потом прилетело принудительное...

Функции работают по отдельности, но если запустить их подряд, то не работают
#include &lt;string&gt; #include &lt;fstream&gt; #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; void func (vector&lt;double&gt;...

Как работают функции?
void UnionSet(int* Set, int SIZE, int* Set_1, int SIZE_1, int* Set_0, int &amp;amp; SIZE_0) { SIZE_0 = SIZE; for (int i = 0; i &amp;lt;...

Как работают функции?
Код отсюда https://www.ibm.com/developerworks/ru/library/j-cb02067/index.html Не пойму как это работает. Эта строка что делает (first...

как работают функции
void Model::MoveUp() { int hold=-1; if(!isCircleUp) { for(int i=0;i&lt;NCIRCLES;i++) { if(circles.nCore ==...


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

Или воспользуйтесь поиском по форуму:
139
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru