该代码检查系统是Windows还是Linux,导入所需的库并定义一个可用的“getch”函数。
但是...函数“_d”可以在lambda内完成吗?将函数转换为lambda表示
def _d():
import sys, tty, termios
f = sys.stdin.fileno()
o = termios.tcgetattr(f)
try:
tty.setraw(sys.stdin.fileno())
c = sys.stdin.read(1)
finally:
termios.tcsetattr(f, termios.TCSADRAIN, o)
return c
_u = type('',(), {
'__init__': lambda s: setattr(s, '', (None for sys in [__import__('sys')] for tty in [__import__('tty')])),
'__call__': _d()
})
_w = None if ImportError else __import__("msvcrt").getch()
getch = (type('',(), {
'__init__': lambda s: setattr(s, 'i', _u()) if ImportError else setattr(s, 'i', _w()),
'__call__': lambda s: s.i()
}))()
我目前有:
setattr(type('',(),{}), '', (
None for sys in [__import__('sys')]
for tty in [__import__('tty')]
for termios in [__import__('termios')]
for f in sys.stdin.fileno()
for o in termios.tcgetattr(f)
for _ in tty.setraw(sys.stdin.fileno())
for c in sys.stdin.read(1)
for _ in termios.tcsetattr(f, termios.TCSADRAIN, o)
))
但是,这并不让我回到 “C”。
哇...为什么地球上做你想做的事是什么?另外,'lambda s:_d()'应该是'_d'。 – Veedrac 2014-09-20 00:59:56
只是因为。 而thx,我改变了“_u .__ call__”中的代码后错过了那个。 – 2014-09-20 01:01:36
这是一个非常非常糟糕的主意。钉不适合钻孔,好吗?请停止尝试将它塞入。你将打破该死的事情。 – 2014-09-20 01:08:22