Функция print() записывает, то есть «печатает», строку или число на консоли. Оператор return не выводит значение, которое возвращается при вызове функции. Это, однако, приводит к немедленному завершению или завершению функции, даже если это не последний оператор функции.
Во многих других языках функция, которая не возвращает значение, называется процедурой.
В данном коде значение, возвращаемое (то есть 2) при вызове функции foo(), используется в функции bar(). Эти возвращаемые значения печатаются на консоли только тогда, когда используются операторы печати, как показано ниже.
Пример
def foo(): print(«Hello from within foo») return 2 def bar(): return 10*foo() print foo() print bar()
Вывод
Hello from within foo 2 Hello from within foo 20
Как закончить программу в питоне
Функция может возвращать результат. Для этого в функции используется оператор return , после которого указывается возвращаемое значение:
def имя_функции ([параметры]): инструкции return возвращаемое_значение
Определим простейшую функцию, которая возвращает значение:
Python-джедай #7 — Циклы
def get_message(): return «Hello METANIT.COM»
Здесь после оператора return идет строка «Hello METANIT.COM» — это значение и будет возвращать функция get_message() .
Затем это результат функции можно присвоить переменной или использовать как обычное значение:
def get_message(): return «Hello METANIT.COM» message = get_message() # получаем результат функции get_message в переменную message print(message) # Hello METANIT.COM # можно напрямую передать результат функции get_message print(get_message()) # Hello METANIT.COM
После оператора return может идти и сложное вычислямое выражение, резлуьтат которого будет возвращаться из функции. Например, определим функцию, которая увеличивает число в два раза:
def double(number): return 2 * number
Здесь функция double будет возвращать результат выражения 2 * number :
def double(number): return 2 * number result1 = double(4) # result1 = 8 result2 = double(5) # result2 = 10 print(f»result1 = «) # result1 = 8 print(f»result2 = «) # result2 = 10
Или другой пример — получение суммы чисел:
def sum(a, b): return a + b result = sum(4, 6) # result = 0 print(f»sum(4, 6) = «) # sum(4, 6) = 10 print(f»sum(3, 5) = «) # sum(3, 5) = 8
Выход из функции
Оператор return не только возвращает значение, но и производит выход из функции. Поэтому он должен определяться после остальных инструкций. Например:
def get_message(): return «Hello METANIT.COM» print(«End of the function») print(get_message())
С точки зрения синтаксиса данная функция корректна, однако ее инструкция print(«End of the function») не имеет смысла — она никогда не выполнится, так как до ее выполнения оператор return возвратит значение и произведет выход из функции.
Однако мы можем использовать оператор return и в таких функциях, которые не возвращают никакого значения. В этом случае после оператора return не ставится никакого возвращаемого значения. Типичная ситуация — в зависимости от опеределенных условий произвести выход из функции:
Расчёт времени выполнения программы на python #short
def print_person(name, age): if age > 120 or age < 1: print(«Invalid age») return print(f»Name: Age: «) print_person(«Tom», 22) print_person(«Bob», -102)
Здесь функция print_person в качестве параметров принимает имя и возраст пользователя. Однако в функции вначале мы проверяем, соответствует ли возраст некоторому диапазону (меньше 120 и больше 0). Если возраст находится вне этого диапазона, то выводим сообщение о недопустимом возрасте и с помощью оператора return выходим из функции. После этого функция заканчивает свою работу.
Однако если возраст корректен, то выводим информацию о пользователе на консоль. Консольный вывод:
Name: Tom Age: 22 Invalid age
Источник: metanit.com
Python-сообщество
- Начало
- » Python для новичков
- » выход из программы
#1 Окт. 1, 2011 23:55:36
выход из программы
есть конструкция try…except после except надо чтобы прога завершилась. как это сделать?
def f(val):
try:
a=input()
val+=int(a)
return val
except TypeError:
print(‘error’)
#вот здесь хочу что бы прога завершилась
#код продолжается дальше
#2 Окт. 2, 2011 05:11:02
выход из программы
import sys
sys.exit()
#3 Окт. 2, 2011 08:30:22
выход из программы
логичнее raise — получите traceback с дополнительным пояснением причин падения
#4 Окт. 2, 2011 13:48:24
выход из программы
doza_and, raise не пойдет….
#5 Окт. 3, 2011 19:39:40
выход из программы
doza_and
логичнее raise — получите traceback с дополнительным пояснением причин падения
Я бы так не делал — райс это падение, а не завершение.
лучше сделать так:
try:
.
except Ecxeption, e:
# logging e
sys.exit(1)
ненулевое значение укажет, что завершение было аварийным
можно потом возвращать различный код выхода в зависимости от типа исключения.
Отредактировано (Окт. 3, 2011 19:47:28)
#6 Окт. 4, 2011 10:16:35
выход из программы
#7 Окт. 4, 2011 16:53:22
выход из программы
atexit — это не то. Он нужен для вызова cleanup функции уже после того, как программа завершилась.
Кстати, можно делать raise SystemExit (аналог sys.exit)
#8 Окт. 4, 2011 17:04:23
выход из программы
а что делать, если нужно выполнять и выполнять модуль, до тех пор пока юзер не наиграется и на вопрос “выйти?” не ответит “Да”?
Пыталась так (mymodule запускается из модуля startmodule.py)
while 1:
import mymodule
ans = input(‘выйти?’)
if ans=’yes’:
break
#9 Окт. 4, 2011 18:29:36
выход из программы
#10 Окт. 5, 2011 03:02:57
выход из программы
Liu
а что делать, если нужно выполнять и выполнять модуль, до тех пор пока юзер не наиграется и на вопрос “выйти?” не ответит “Да”?
Пыталась так (mymodule запускается из модуля startmodule.py)
#!/usr/bin/env python3
import sys
ans = ‘no’
while ans != ‘yes’:
try:
del sys.modules[‘mod’]
except KeyError:
pass
import mod
ans = input(‘выйти? (yes/no) ‘)
print(‘Bye’)
print(‘Hello’)
в третьем питоне нет глобальной reload()
Отредактировано (Окт. 5, 2011 03:04:45)
Источник: python.su