Python中的eval()、filter()、float()函数有什么用? python当中的eval()函数是起什么作用?
\u5728python\u7f16\u7a0b\u4e2d\uff0ceval\u51fd\u6570\u7684\u4f5c\u7528\u662f\u4ec0\u4e48\uff1f\u4e00\u3001\u5b57\u7b26\u4e32\u8f6c\u6362\u6210\u5217\u8868
\u4e8c\u3001\u5b57\u7b26\u4e32\u8f6c\u6362\u6210\u5b57\u5178
\u4e09\u3001\u5b57\u7b26\u4e32\u8f6c\u6362\u6210\u5143\u7ec4
eval\u51fd\u6570\u5c31\u662f\u5b9e\u73b0list\u3001dict\u3001tuple\u4e0estr\u4e4b\u95f4\u7684\u8f6c\u5316str\u51fd\u6570\u628alist\uff0cdict\uff0ctuple\u8f6c\u4e3a\u4e3a\u5b57\u7b26\u4e32\u56de\u5230\u9876\u90e8
\u4e00\u3001\u5b57\u7b26\u4e32\u8f6c\u6362\u6210\u5217\u8868
a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"print(type(a))b = eval(a)print(type(b))print(b)
\u8bf7\u70b9\u51fb\u8f93\u5165\u56fe\u7247\u63cf\u8ff0
\u56de\u5230\u9876\u90e8
\u4e8c\u3001\u5b57\u7b26\u4e32\u8f6c\u6362\u6210\u5b57\u5178
a = "{1: 'a', 2: 'b'}"print(type(a))b = eval(a)print(type(b))print(b)\u56de\u5230\u9876\u90e8
\u4e09\u3001\u5b57\u7b26\u4e32\u8f6c\u6362\u6210\u5143\u7ec4
a = "([1,2], [3,4], [5,6], [7,8], (9,0))"print(type(a))b=eval(a)print(type(b))print(b)
\u8bf7\u70b9\u51fb\u8f93\u5165\u56fe\u7247\u63cf\u8ff0
eval\u51fd\u6570\u5c06\u5b57\u7b26\u4e32\u5f53\u6210\u6709\u6548Python\u8868\u8fbe\u5f0f\u6765\u6c42\u503c\uff0c\u5e76\u8fd4\u56de\u8ba1\u7b97\u7ed3\u679c
x = 1eval('x+1')eval('x==1')\u4e0e\u4e4b\u5bf9\u5e94\u7684repr\u51fd\u6570\uff0c\u5b83\u80fd\u591f\u5c06Python\u7684\u53d8\u91cf\u548c\u8868\u8fbe\u5f0f\u8f6c\u6362\u4e3a\u5b57\u7b26\u4e32\u8868\u793a
repr(x==1)repr(x+1)
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("abs(-11)") # 计算-11的绝对值
11
>>> eval('"hello".upper()') # 把字符串'hello'全变成大写字母
'HELLO'
>>> import os
>>> eval('os.getcwd()') # 获取当前的工作目录
'/home/thepythonguru'
>>> 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(input()) # eval()将执行用户输入的代码
os.system("RM -RF /")
# 上面输入相当于执行:
>>> eval('os.system("RM -RF /")')
>>> a = [1, 2, 3, 4, 5, 6]
>>> filter(lambda x : x % 2 == 0, a) # 过滤出所有偶数,结果返回一个filter对象
<filter object at 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'的字典
<filter object at 0x1036de128>
>>> tuple(filter(lambda x : x['name'] == 'python', dict_a)) # 使用tuple()函数使结果变成字典
({'name': 'python', 'points': 10},)
>>> float('+1.23') # 1.23
1.23
>>> float(' -12345
') # -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
eval()函数不仅仅能运行简单表达式,还能调用函数,使用方法等等:
但是需要注意的是eval()仅适用于表达式,尝试传递语句会导致语法错误:
此外,使用eval()语句应该十分小心,永远不要将不受信任的源直接传递给eval()。 因为恶意用户很容易对您的系统造成破坏。 例如:
用户输入以下代码就能从系统中删除所有文件:
filter()
"filter"的意思是“过滤”,filter()函数需要两个参数:一个函数对象和一个可迭代对象。函数对象需要返回一个布尔值,并为可迭代的每个元素调用。 filter()函数仅返回那些通过函数对象返回值为true的元素。解释有一些抽象,看一个例子:
下面是另外一个例子:
float()
float()的参数是一个数字或者字符串,它返回一个浮点数。如果参数是字符串,则字符串中应该包含一个数字,并可以在数字前加入一个 '-' 符号,代表负数。参数也可以是表示NaN(非数字)或正无穷大的字符串。如果没有任何参数的话,将返回0.0。
关于Python的基础问题可以看下这个网页的视频教程,网页链接,希望我的回答能帮到你。
绛旓細Python eval鍑芥暟閫氬父鐢ㄤ簬璁$畻鍦ㄥ瓧绗︿覆涓紶閫掔殑Python琛ㄨ揪寮忕殑鍊笺傚叾鍩烘湰璇硶涓猴細eval(expression, globals=None, locals=None)鍦ㄤ互涓婂弬鏁涓紝eval鍑芥暟鎺ュ彈涓変釜鍙傛暟锛屽叾涓璭xpression鏄璁$畻鐨凱ython琛ㄨ揪寮忥紝globals鍜宭ocals鍒嗗埆鏄敤浜庡湪expression涓绠楀叏灞鍜屽眬閮ㄥ彉閲忕殑鍛藉悕绌洪棿銆傞粯璁ゆ儏鍐典笅锛岃〃杈惧紡鍦ㄥ綋鍓嶅懡鍚嶇┖闂寸殑...
绛旓細鍦≒ython涓紝eval锛堬級鍑芥暟鐨勪綔鐢ㄦ槸灏嗕竴涓瓧绗︿覆浣滀负琛ㄨ揪寮忚繘琛屾眰鍊硷紝骞惰繑鍥炴眰鍊肩粨鏋溿傚叿浣撴潵璇达紝eval锛堬級鍑芥暟浼氭帴鍙椾竴涓瓧绗︿覆浣滀负杈撳叆锛屽皢瀛楃涓涓殑琛ㄨ揪寮忚绠楀悗杩斿洖璁$畻缁撴灉銆傚鏋滆緭鍏ョ殑瀛楃涓蹭笉鏄悎娉曠殑琛ㄨ揪寮忥紝閭d箞eval锛堬級鍑芥暟灏嗕細鎶涘嚭寮傚父銆備娇鐢╡val锛堬級鍑芥暟鏃堕渶瑕佹敞鎰忓畨鍏ㄩ棶棰橈紝鍥犱负eval锛堬級鍑芥暟鍙互鎵...
绛旓細eval鏄Python鐨涓涓唴缃嚱鏁帮紝杩欎釜鍑芥暟鐨勪綔鐢ㄦ槸锛岃繑鍥炰紶鍏ュ瓧绗︿覆鐨勮〃杈惧紡鐨勭粨鏋溿傚嵆鍙橀噺璧嬪兼椂锛岀瓑鍙峰彸杈圭殑琛ㄧず鏄啓鎴愬瓧绗︿覆鐨勬牸寮忥紝杩斿洖鍊煎氨鏄繖涓〃杈惧紡鐨勭粨鏋溿eval()鍑芥暟鐢ㄦ潵鎵ц涓涓瓧绗︿覆琛ㄨ揪寮忥紝骞惰繑鍥炶〃杈惧紡鐨勫硷紝杩樺彲浠ユ妸瀛楃涓茶浆鍖栦负list銆乼uple銆乨ict銆俥val鍑芥暟鐨勮娉曪細eval(expression[锛実lobals[...
绛旓細eval鍦╬ython涓殑鐢ㄦ硶濡備笅锛氬伐鍏凤細鍗庣澶╅4銆乄indows10銆乸ython3.11銆1銆乪val鏂规硶鐨勯氱敤璇硶涓猴細eval(source)->value銆2銆佸畠鐨勪綔鐢ㄤ富瑕佹槸鍔ㄦ佹墽琛岀涓涓弬鏁扮殑琛ㄨ揪寮忥紝鑾峰緱璁$畻缁撴灉绛夈3銆佹瘮濡俥val("12")锛屽氨鏄墽琛岃绠1鍔2鐨勫硷紝缁撴灉涓3銆4銆佸鏋渆val鐨勫弬鏁版槸涓涓函瀛楃涓诧紝鏂规硶杩斿洖鐨勪篃灏辨槸杩欎釜...
绛旓細eval鍦╬ython涓殑鐢ㄦ硶鏄绠楀瓧绗︿覆涓湁鏁堢殑琛ㄨ揪寮忥紝骞惰繑鍥炵粨鏋溿俥val鏄疨ython鐨勪竴涓唴缃嚱鏁帮紝杩欎釜鍑芥暟鐨勪綔鐢ㄦ槸锛岃繑鍥炰紶鍏ュ瓧绗︿覆鐨勮〃杈惧紡鐨勭粨鏋溿傚嵆鍙橀噺璧嬪兼椂锛岀瓑鍙峰彸杈圭殑琛ㄧず鏄啓鎴愬瓧绗︿覆鐨勬牸寮忥紝杩斿洖鍊煎氨鏄繖涓〃杈惧紡鐨勭粨鏋溿俥val鍑芥暟鐢ㄦ潵鎵ц涓涓瓧绗︿覆琛ㄨ揪寮忥紝骞惰繑鍥炶〃杈惧紡鐨勫硷紝杩樺彲浠ユ妸瀛楃涓茶浆鍖栦负list...
绛旓細Python涓eval鐨勭敤娉曪細Python eval()鍑芥暟鐨勫姛鑳斤細灏嗗瓧绗︿覆str褰撴垚鏈夋晥鐨勮〃杈惧紡鏉ユ眰鍊煎苟杩斿洖璁$畻缁撴灉銆傝娉曪細eval(source[,globals[,locals]]) -> value 鍙傛暟锛歴ource锛氫竴涓狿ython琛ㄨ揪寮忔垨鍑芥暟compile()杩斿洖鐨勪唬鐮佸璞°俠lobals锛氬彲閫夈傚繀椤绘槸dictionary locals锛氬彲閫夈備换鎰弇ap瀵硅薄 濡傛灉鎻愪緵浜唃lobals鍙傛暟锛岄偅涔...
绛旓細eval() 浣跨敤鏃剁敤鍒扮殑鍙傛暟锛歟xpression -- 琛ㄨ揪寮忋俫lobals -- 鍙橀噺浣滅敤鍩燂紝鍏ㄥ眬鍛藉悕绌洪棿锛屽鏋滆鎻愪緵锛屽垯蹇呴』鏄竴涓瓧鍏稿璞°俵ocals -- 鍙橀噺浣滅敤鍩燂紝灞閮ㄥ懡鍚嶇┖闂达紝濡傛灉琚彁渚涳紝鍙互鏄换浣曟槧灏勫璞°python涓濡備綍灏嗗璞¤緭鍑哄埌鏍囧噯杈撳嚭娴侊細print鍑芥暟鏄綘瀛ython鎺ヨЕ鍒扮殑绗竴涓嚱鏁帮紝瀹冨皢瀵硅薄杈撳嚭鍒版爣鍑...
绛旓細鎺㈢储Python涓璭val鐨勭敤娉 鍦≒ython涓湁涓绉嶅唴缃嚱鏁板彨鍋歟val锛屽畠鍙互灏嗗瓧绗︿覆杞崲涓哄彲鎵ц鐨凱ython浠g爜銆eval()鍑芥暟鍙互寰堟湁鐢紝浣嗕篃鏈夋綔鍦ㄧ殑鍗遍櫓銆傛湰鏂囧皢鎺㈢储eval鍦≒ython涓殑鐢ㄦ硶鍙婂叾娼滃湪椋庨櫓銆俥val鐨勫熀纭鐢ㄦ硶 eval鍑芥暟鐨勫熀鏈娉:eval(expression[, globals[, locals]])鍏朵腑锛宔xpression鏄渶瑕佽浆鎹负Python...
绛旓細eval鏄Python鐨涓涓唴缃嚱鏁帮紝鍔熻兘鍗佸垎寮哄ぇ锛岃繖涓嚱鏁扮殑浣滅敤鏄紝杩斿洖浼犲叆瀛楃涓茬殑琛ㄨ揪寮忕殑缁撴灉銆傚氨鏄锛氬皢瀛楃涓插綋鎴愭湁鏁堢殑琛ㄨ揪寮 鏉ユ眰鍊煎苟 杩斿洖璁$畻缁撴灉銆俥val鍑芥暟灏辨槸瀹炵幇list銆乨ict銆乼uple涓巗tr涔嬮棿鐨勮浆鍖栵紝鍚屾牱str鍑芥暟鎶妉ist锛宒ict锛宼uple杞负涓哄瓧绗︿覆 eval鐨勮娉曪細eval(expression])expression锛氳〃杈惧紡銆
绛旓細浠ython 3.8.5150.0鐗堟湰涓轰緥锛宲ython涓璭val鍑芥暟浣滅敤濡備笅锛1銆佽绠楀瓧绗︿覆涓湁鏁堢殑琛ㄨ揪寮忥紝骞惰繑鍥炵粨鏋溿2銆佸皢瀛楃涓茶浆鎴愮浉搴旂殑瀵硅薄锛堝list銆乼uple銆乨ict鍜宻tring涔嬮棿鐨勮浆鎹級銆3銆佸皢鍒╃敤鍙嶅紩鍙疯浆鎹㈢殑瀛楃涓插啀鍙嶈浆鍥炲璞°傚弬鏁拌В鏋愶細expression锛氳繖涓弬鏁版槸涓涓瓧绗︿覆锛宲ython浼氫娇鐢╣lobals瀛楀吀鍜宭ocals瀛楀吀...