我在Python中运行了这段代码,作为异常处理的一部分,在一个会话中,在 复数视力 但现在即使写了一个错误的代码,结果也是OK的,例如:hello world没有打印语句给我的退出代码0
能否请教一下?
代码 。
try:
import msvcrt
def getkey():
return msvcrt.getch()
except ImportError:
import sys
import tty
import termios
def getkey():
fd=sys.stdin.fileno()
original_attributes =termios.tcgetattr(fd)
try:
tty.setraw(sys.stdin.fileno())
ch = sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, original_attributes)
return ch
你需要首先确保你的代码的缩进是正确的。
例如 get_key
函数应该同时定义在 try
的情况下,并在 catch
,在 catch
的情况下,你在 catch 语句下正确地缩进了它,但对于 try
的情况下,你把它放在了与 try
本身,对于解释者来说,这意味着函数定义与 try
因此,它抛出了一个错误,因为你不应该在 try 和 catch 语句之间添加代码。
重写你的程序
try:
import msvcrt
def getkey():
return msvcrt.getch()
except ImportError:
import sys
import tty
import termios
def getkey():
fd=sys.stdin.fileno()
original_attributes =termios.tcgetattr(fd)
try:
tty.setraw(sys.stdin.fileno())
ch = sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, original_attributes)
return ch
这段代码说,现在,如果我们试图导入库中的 msvcrt
并且成功,那么我们将定义一个函数 get_key
使用库,如果失败了,那么我们将不使用库重新定义它。