看到一段代碼,判讀輸入的數字,用的是eval(input()),查了一下,原來input()會把所有輸入值,包括數字,視為字符串,而eval()會去掉字符串最外層的引號,然后當做Python語句執行[mark:語句or表達式,應該是表達式!],直觀理解是:看起來像數字的字符串變成數字了
>>> a = input() 123 >>> type(a) <class 'str'> >>> b = eval(input()) 456 >>> type(b) <class 'int'> >>>
一個反例
>>> a = eval("'pybook'") >>> a 'pybook'
所以本質上,eval是去一層引號,然后按語句執行,eval(input())本質是一個取輸入數字的技巧
如果不用eval,怎么取輸入的數字?
可以用int, float轉數據類型,但效果不如eval