eval的語法:python
eval(expression[, globals[, locals]])
>>參數
expression -- 表達式。
globals -- 變量做用域,全局命名空間,若是被提供,則必須是一個字典對象。特指當前的模塊。若是模塊定義了一個名爲 x 的變量,函數或類,Python 將使用它而後中止搜索。
locals -- 變量做用域,局部命名空間,若是被提供,能夠是任何映射對象。特指當前函數或類的方法。若是函數定義了一個局部變量 x, 或一個參數 x,Python 將使用它,而後中止搜索。
>>返回值
返回表達式計算結果。express
能夠把list,tuple,dict和string相互轉化。 ################################################# 字符串轉換成列表 >>>a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]" >>>type(a) <type 'str'> >>> b = eval(a) >>> print b [[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]] >>> type(b) <type 'list'> ################################################# 字符串轉換成字典 >>> a = "{1: 'a', 2: 'b'}" >>> type(a) <type 'str'> >>> b = eval(a) >>> print b {1: 'a', 2: 'b'} >>> type(b) <type 'dict'> ################################################# 字符串轉換成元組 >>> a = "([1,2], [3,4], [5,6], [7,8], (9,0))" >>> type(a) <type 'str'> >>> b = eval(a) >>> print b ([1, 2], [3, 4], [5, 6], [7, 8], (9, 0)) >>> type(b) <type 'tuple'>
eval()使用緣由:服務器
1)在編譯語言裏要動態地產生代碼,基本上是不可能的,但動態語言是能夠,意味着軟件已經部署到服務器上了,但只要做不多的更改,只好直接修改這部分的代碼,就可當即實現變化,不用整個軟件從新加載。
2)在machin learning里根據用戶使用這個軟件頻率,以及方式,可動態地修改代碼,適應用戶的變化。函數
全局變量與局部變量:code
in()判斷你在不在宿舍成員裏面。對象
修改上面一道題的內容,實現能夠循環輸入姓名檢查,提示,採用while:blog