該代碼檢查系統是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