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