Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 1, 2011 23:55:36

lome_kingar
От:
Зарегистрирован: 2011-03-19
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

выход из программы

есть конструкция try…except после except надо чтобы прога завершилась. как это сделать?

def f(val):
try:
a=input()
val+=int(a)
return val
except TypeError:
print('error')
#вот здесь хочу что бы прога завершилась

#код продолжается дальше



Офлайн

#2 Окт. 2, 2011 05:11:02

lavrton
От:
Зарегистрирован: 2010-11-13
Сообщения: 35
Репутация: +  1  -
Профиль   Адрес электронной почты  

выход из программы

import sys
sys.exit()



Офлайн

#3 Окт. 2, 2011 08:30:22

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

выход из программы

логичнее raise - получите traceback с дополнительным пояснением причин падения



Офлайн

#4 Окт. 2, 2011 13:48:24

lome_kingar
От:
Зарегистрирован: 2011-03-19
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

выход из программы

спасибо!

doza_and, raise не пойдет….



Офлайн

#5 Окт. 3, 2011 19:39:40

Yurietc
От:
Зарегистрирован: 2007-07-18
Сообщения: 112
Репутация: +  0  -
Профиль   Отправить e-mail  

выход из программы

doza_and
логичнее raise - получите traceback с дополнительным пояснением причин падения
Я бы так не делал - райс это падение, а не завершение.
лучше сделать так:
try:
...
except Ecxeption, e:
# logging e
sys.exit(1)
ненулевое значение укажет, что завершение было аварийным
можно потом возвращать различный код выхода в зависимости от типа исключения.



Отредактировано (Окт. 3, 2011 19:47:28)

Офлайн

#6 Окт. 4, 2011 10:16:35

d1ffuz0r
От: Moscow
Зарегистрирован: 2011-03-25
Сообщения: 127
Репутация: +  5  -
Профиль   Отправить e-mail  

выход из программы

можно ещё поюзать вот это http://docs.python.org/library/atexit.html

Офлайн

#7 Окт. 4, 2011 16:53:22

ZAN
От:
Зарегистрирован: 2007-06-10
Сообщения: 403
Репутация: +  10  -
Профиль   Отправить e-mail  

выход из программы

atexit - это не то. Он нужен для вызова cleanup функции уже после того, как программа завершилась.
Кстати, можно делать raise SystemExit (аналог sys.exit)



Офлайн

#8 Окт. 4, 2011 17:04:23

Liu
От:
Зарегистрирован: 2011-10-04
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

выход из программы

а что делать, если нужно выполнять и выполнять модуль, до тех пор пока юзер не наиграется и на вопрос “выйти?” не ответит “Да”?
Пыталась так (mymodule запускается из модуля startmodule.py)

while 1:
import mymodule
ans = input('выйти?')
if ans='yes':
break



Офлайн

#9 Окт. 4, 2011 18:29:36

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

выход из программы

import -> reload



Офлайн

#10 Окт. 5, 2011 03:02:57

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

выход из программы

Liu
а что делать, если нужно выполнять и выполнять модуль, до тех пор пока юзер не наиграется и на вопрос “выйти?” не ответит “Да”?
Пыталась так (mymodule запускается из модуля startmodule.py)
t.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')
mod.py
print('Hello')
[guest@localhost tests]$ ./t.py
Hello
выйти? (yes/no) no
Hello
выйти? (yes/no) no
Hello
выйти? (yes/no) no
Hello
выйти? (yes/no) yes
Bye
[guest@localhost tests]$
в третьем питоне нет глобальной reload()



Отредактировано (Окт. 5, 2011 03:04:45)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version