>>x ">
Python解釋器內置了許多函數,這意味著我們無需定義,始終可以它們。下面按照函數的字母順序,討論一些常用的內建函數。
eval()
eval()函數解析傳給它的表達式,并在程序中運行Python表達式(代碼)。舉個例子:
- >>> x = 1
- >>> eval("x + 1") # 注意:"x + 1"是字符串
- 2
- >>> eval("4 < 9")
- True
- >>> eval("'py' * 3")
- 'pypypy'
- >>> eval("10 ** 2")
- 100
eval()函數不僅僅能運行簡單表達式,還能調用函數,使用方法等等:
- >>> eval("abs(-11)") # 計算-11的絕對值
- 11
- >>> eval('"hello".upper()') # 把字符串'hello'全變成大寫字母
- 'HELLO'
- >>> import os
- >>> eval('os.getcwd()') # 獲取當前的工作目錄
- '/home/thepythonguru'
但是需要注意的是eval()僅適用于表達式,嘗試傳遞語句會導致語法錯誤:
- >>> eval('a = 1') # 賦值語句
- Traceback (most recent call last):
- File "
" , line 1, in- File "
" , line 1- a = 1
- ^
- SyntaxError: invalid syntax
- >>> eval('import re') # 導入語句
- Traceback (most recent call last):
- File "
" , line 1, in- File "
" , line 1- import re
- ^
- SyntaxError: invalid syntax
此外,使用eval()語句應該十分小心,永遠不要將不受信任的源直接傳遞給eval()。 因為惡意用戶很容易對您的系統造成破壞。 例如:
- >>> eval(input()) # eval()將執行用戶輸入的代碼
用戶輸入以下代碼就能從系統中刪除所有文件:
- os.system("RM -RF /")
- # 上面輸入相當于執行:
- >>> eval('os.system("RM -RF /")')
filter()
"filter"的意思是“過濾”,filter()函數需要兩個參數:一個函數對象和一個可迭代對象。函數對象需要返回一個布爾值,并為可迭代的每個元素調用。 filter()函數僅返回那些通過函數對象返回值為true的元素。解釋有一些抽象,看一個例子:
- >>> a = [1, 2, 3, 4, 5, 6]
- >>> filter(lambda x : x % 2 == 0, a) # 過濾出所有偶數,結果返回一個filter對象
0x1036dc048 >- >>> list(filter(lambda x : x % 2 == 0, a)) # 可以使用list()函數使fileter對象變成列表,方便查看結果
- [2, 4, 6]
下面是另外一個例子:
- >>> dict_a = [{'name': 'python', 'points': 10}, {'name': 'java', 'points': 8}]
- >>> filter(lambda x : x['name'] == 'python', dict_a) # 過濾出列表中鍵'name'為值'python'的字典
0x1036de128 >- >>> tuple(filter(lambda x : x['name'] == 'python', dict_a)) # 使用tuple()函數使結果變成字典
- ({'name': 'python', 'points': 10},)
float()
float()的參數是一個數字或者字符串,它返回一個浮點數。如果參數是字符串,則字符串中應該包含一個數字,并可以在數字前加入一個 '-' 符號,代表負數。參數也可以是表示NaN(非數字)或正無窮大的字符串。如果沒有任何參數的話,將返回0.0。
- >>> float('+1.23') # 1.23
- 1.23
- >>> float(' -12345\n') # -12345
- -12345.0
- >>> float('1e-003') # 0.001
- 0.001
- >>> float('+1E6') # 10的6次冪
- 1000000.0
- >>> float('-Infinity') # 無窮小
- -inf
- >>> float('-inf') + 100 # 負無窮小加100仍等于負無窮小
- -inf
- >>> float('inf') # 無窮大
- inf
- >>> float('NaN') # NaN,代表非數字
- nan
>>本文地址:http://www.jecan.cn/zhuanye/2020/48543.html
聲明:本站稿件版權均屬中公教育優就業所有,未經許可不得擅自轉載。
1 您的年齡
2 您的學歷
3 您更想做哪個方向的工作?