欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python+eval函數(shù)實(shí)現(xiàn)動(dòng)態(tài)地計(jì)算數(shù)學(xué)表達(dá)式詳解

 更新時(shí)間:2022年09月08日 12:40:44   作者:云朵君  
Python的 eval() 允許從基于字符串或基于編譯代碼的輸入中計(jì)算任意Python表達(dá)式。當(dāng)從字符串或編譯后的代碼對(duì)象的任何輸入中動(dòng)態(tài)計(jì)算Python表達(dá)式時(shí),此函數(shù)非常方便。本文將利用eval實(shí)現(xiàn)動(dòng)態(tài)地計(jì)算數(shù)學(xué)表達(dá)式,需要的可以參考一下

Python的 eval() 允許從基于字符串或基于編譯代碼的輸入中計(jì)算任意Python表達(dá)式。當(dāng)從字符串或編譯后的代碼對(duì)象的任何輸入中動(dòng)態(tài)計(jì)算Python表達(dá)式時(shí),此函數(shù)非常方便。

本文中,云朵君將和大家一起從如下兩個(gè)方面展開學(xué)習(xí)。

  • Python的 eval() 如何工作
  • 如何使用 eval() 來(lái)動(dòng)態(tài)地計(jì)算任意基于字符串或基于編譯代碼的輸入

此外,后期推文將一起學(xué)習(xí)如何使用 Python 的 eval() 來(lái)編碼一個(gè)交互式地計(jì)算數(shù)學(xué)表達(dá)式的應(yīng)用程序。通過(guò)這個(gè)例子,我們將把所學(xué)到的關(guān)于 eval() 的一切應(yīng)用于一個(gè)實(shí)際問(wèn)題。

Python 的 eval()

我們可以使用內(nèi)置的 Python eval() 從基于字符串或基于編譯代碼的輸入中動(dòng)態(tài)地計(jì)算表達(dá)式。如果我們向 eval() 傳遞一個(gè)字符串,那么該函數(shù)會(huì)解析它,將其編譯為字節(jié)碼,并將其作為一個(gè) Python 表達(dá)式進(jìn)行計(jì)算。但是如果我們用一個(gè)編譯過(guò)的代碼對(duì)象調(diào)用 eval(),那么該函數(shù)只執(zhí)行計(jì)算步驟,如果我們用相同的輸入多次調(diào)用 eval(),這就非常方便了。

Python的 eval() 的定義如下。

eval(expression[,?globals[,?locals]])

該函數(shù)需要一個(gè)第一個(gè)參數(shù),稱為expression,它包含了需要計(jì)算的表達(dá)式。eval()還需要兩個(gè)可選參數(shù)。

  • globals
  • locals

在接下來(lái)的內(nèi)容中,我們將學(xué)習(xí)這些參數(shù)是什么,以及 eval() 如何使用它們來(lái)即時(shí)計(jì)算Python 表達(dá)式。

注意: 我們也可以使用 exec()來(lái)動(dòng)態(tài)地執(zhí)行 Python 代碼。eval() 和 exec() 的主要區(qū)別是,eval() 只能執(zhí)行或計(jì)算表達(dá)式,而 exec() 可以執(zhí)行任何一段 Python代碼。

第一個(gè)參數(shù):expression

eval() 的第一個(gè)參數(shù)稱為 expression,它是一個(gè)必需的參數(shù),用于保存函數(shù)的 基于字符串 或 基于編譯碼的 輸入。當(dāng)調(diào)用 eval() 時(shí),expression 的內(nèi)容被作為 Python 表達(dá)式進(jìn)行計(jì)算。下面是使用基于字符串的輸入的例子。

>>>?eval("2?**?8")
256
>>>?eval("1024?+?1024")
2048
>>>?eval("sum([8,?16,?32])")
56
>>>?x?=?100
>>>?eval("x?*?2")
200

當(dāng)用一個(gè)字符串作為參數(shù)調(diào)用 eval() 時(shí),該函數(shù)返回對(duì)輸入字符串進(jìn)行計(jì)算的結(jié)果。默認(rèn)情況下,eval()可以訪問(wèn)全局變量名,如上例中的x。

為了計(jì)算一個(gè)基于字符串的表達(dá)式,Python 的 eval() 運(yùn)行以下步驟。

  • 解析表達(dá)式
  • 將其編譯為字節(jié)碼
  • 將其作為一個(gè)Python表達(dá)式進(jìn)行計(jì)算
  • 返回計(jì)算的結(jié)果

eval()的第一個(gè)參數(shù) expression 強(qiáng)調(diào)了該函數(shù)只作用于表達(dá)式,并非復(fù)合語(yǔ)句。Python 文檔對(duì) expression 的定義如下。

expression

一段可以被計(jì)算為某種值的語(yǔ)法。換句話說(shuō),表達(dá)式是表達(dá)式元素的累積,如字面意義、名稱、屬性訪問(wèn)、運(yùn)算符或函數(shù)調(diào)用,它們都返回一個(gè)值。與許多其他語(yǔ)言相比,并非所有的語(yǔ)言結(jié)構(gòu)都是表達(dá)式。也有一些語(yǔ)句不能作為表達(dá)式使用,如 while。此外賦值也是語(yǔ)句,不是表達(dá)式。

另一方面,Python statement 有如下定義。

statement

statement是一個(gè)套件(一個(gè)代碼 "塊")的一部分。statement要么是一個(gè)表達(dá)式,要么是帶有關(guān)鍵字的幾個(gè)結(jié)構(gòu)體之一,如 if、while或for。

如果向eval()傳遞一個(gè)復(fù)合語(yǔ)句,那么會(huì)得到一個(gè) SyntaxError。下面的例子是用eval()來(lái)執(zhí)行一個(gè)if語(yǔ)句。

>>>?x?=?100
>>>?eval("if?x:?print(x)")
??File?"<string>",?line?1
????if?x:?print(x)
????^
SyntaxError:?invalid?syntax

上面報(bào)錯(cuò)是因?yàn)?nbsp;eval() 只接受表達(dá)式。任何其它語(yǔ)句,如 if、for、while、import、def 或 class,都會(huì)引發(fā)錯(cuò)誤。

注意: for 循環(huán)是一個(gè)復(fù)合語(yǔ)句,但是 for 關(guān)鍵字也可以用在推導(dǎo)式中,此時(shí)它被認(rèn)為是表達(dá)式??梢允褂胑val() 來(lái)計(jì)算推導(dǎo)式,即使它們使用了 for 關(guān)鍵字。

eval()也不允許進(jìn)行賦值操作。

>>>?eval("pi?=?3.1416")
??File?"<string>",?line?1
????pi?=?3.1416
???????^
SyntaxError:?invalid?syntax

如果我們將一個(gè)賦值操作作為參數(shù)傳遞給 eval() ,那么會(huì)得到一個(gè) SyntaxError。賦值操作是語(yǔ)句,而不是表達(dá)式,語(yǔ)句不允許與 eval() 一起使用。

當(dāng)解析器不理解輸入的表達(dá)式時(shí),也會(huì)得到一個(gè) SyntaxError。在下面的例子中計(jì)算一個(gè)違反 Python 語(yǔ)法的表達(dá)式。

>>>?#?Incomplete?expression
>>>?eval("5?+?7?*")
??File?"<string>",?line?1
????5?+?7?*
??????????^
SyntaxError:?unexpected?EOF?while?parsing

所以,不能把一個(gè)違反 Python 語(yǔ)法的表達(dá)式傳給 eval() 。在上面的例子中,我們嘗試計(jì)算一個(gè)不完整的表達(dá)式 ("5 + 7 *") 時(shí)拋出一個(gè) SyntaxError,因?yàn)榉治銎鞑焕斫獗磉_(dá)式的語(yǔ)法。

我們也可以把已編譯的代碼對(duì)象傳遞給 eval() 。因此可以使用函數(shù) compile(),一個(gè)內(nèi)置函數(shù),可以將輸入的字符串編譯成代碼對(duì)象或 AST 對(duì)象,這樣就可以用 eval() 來(lái)計(jì)算它。

如何使用compile()的細(xì)節(jié)超出了本文的范圍,但這里可以快速了解一下它的前三個(gè)必要參數(shù)。

  • source 保存我們要編譯的源代碼。這個(gè)參數(shù)可以接受普通字符串、字節(jié)字符串和AST對(duì)象。
  • filename 給出讀取代碼的文件。如果我們要使用一個(gè)基于字符串的輸入,那么這個(gè)參數(shù)的值應(yīng)該是"<string>"。
  • mode 指定了我們想得到哪種編譯后的代碼。如果我們想用eval()來(lái)處理編譯后的代碼,那么這個(gè)參數(shù)應(yīng)該被設(shè)置為 "eval"。

我們可以使用 compile() 向eval()提供代碼對(duì)象,而不是普通的字符串。

>>>?#?算術(shù)運(yùn)算
>>>?code?=?compile("5?+?4",?"<string>",?"eval")
>>>?eval(code)
9
>>>?code?=?compile("(5?+?7)?*?2",?"<string>",?"eval")
>>>?eval(code)
24
>>>?import?math
>>>?#?一個(gè)球體的體積
>>>?code?=?compile("4?/?3?*?math.pi?*?math.pow(25,?3)",?"<string>",?"eval")
>>>?eval(code)
65449.84694978735

如果我們使用 compile() 來(lái)編譯要傳遞給eval()的表達(dá)式,那么eval()會(huì)經(jīng)過(guò)以下步驟。

  • 計(jì)算編譯后的代碼
  • 返回計(jì)算的結(jié)果

如果使用基于編譯碼的輸入調(diào)用 eval() ,那么該函數(shù)會(huì)執(zhí)行計(jì)算步驟并立即返回結(jié)果。當(dāng)需要多次計(jì)算同一個(gè)表達(dá)式時(shí),這可能很方便。在這種情況下,最好預(yù)先編譯表達(dá)式,并在隨后調(diào)用 eval() 時(shí)重復(fù)使用產(chǎn)生的字節(jié)碼。

如果我們事先編譯了輸入表達(dá)式,那么連續(xù)調(diào)用eval()將運(yùn)行得更快,因?yàn)槲覀儾粫?huì)重復(fù)解析和編譯的步驟。如果我們正在計(jì)算復(fù)雜的表達(dá)式,不需要的重復(fù)會(huì)導(dǎo)致高的CPU時(shí)間和過(guò)度的內(nèi)存消耗。

第二個(gè)參數(shù):globals

eval() 的第二個(gè)參數(shù) globals,可選的,字典類型,為 eval() 提供一個(gè)全局命名空間。通過(guò) globals 告訴 eval() 在計(jì)算表達(dá)式時(shí)要使用哪些全局變量名。

全局變量名是所有那些在當(dāng)前全局范圍或命名空間中可用的變量名。可以從代碼的任何地方訪問(wèn)它們。

在字典中傳遞給 globals 的所有名字在執(zhí)行時(shí)都可以提供給 eval() 。請(qǐng)看下面的例子,它展示了如何使用一個(gè)自定義的字典來(lái)為 eval() 提供一個(gè)全局命名空間。

>>>?x?=?100??#?一個(gè)全局變量
>>>?eval("x?+?100",?{"x":?x})
200
>>>?y?=?200??#?另一個(gè)全局變量
>>>?eval("x?+?y",?{"x":?x})
Traceback?(most?recent?call?last):
??File?"<stdin>",?line?1,?in?<module>
??File?"<string>",?line?1,?in?<module>
NameError:?name?'y'?is?not?defined

如果為 eval() 的 globals 參數(shù)提供一個(gè)自定義字典,那么 eval() 將只接受這些名字作為 globals。在這個(gè)自定義字典之外定義的任何全局變量名都不能從 eval() 內(nèi)部訪問(wèn)。這就是為什么當(dāng)你試圖在上述代碼中訪問(wèn) y 時(shí),Python 會(huì)引發(fā)一個(gè) NameError。傳遞給 globals 的字典不包括 y。

可以通過(guò)在字典中列出名字來(lái)插入 globals,然后這些名字在求值過(guò)程中就會(huì)出現(xiàn)。例如,如果在 globals 中插入了 y,那么在上面的例子中對(duì) "x + y" 的求值將如期進(jìn)行。

>>>?eval("x?+?y",?{"x":?x,?"y":?y})
300

因?yàn)榘?nbsp;y 添加到了自定義 globals 字典中,所以成功計(jì)算 "x + y" 的值,得到的預(yù)期返回值 300。

我們也可以提供不存在于當(dāng)前全局范圍的變量名。此時(shí)需要為每個(gè)名字提供一個(gè)具體的值。eval()在運(yùn)行時(shí)將把這些變量名解釋為全局變量名。

>>>?eval("x?+?y?+?z",?{"x":?x,?"y":?y,?"z":?300})
600
>>>?z
Traceback?(most?recent?call?last):
??File?"<stdin>",?line?1,?in?<module>
NameError:?name?'z'?is?not?defined

盡管z沒(méi)有在當(dāng)前的全局范圍內(nèi)定義,但是這個(gè)變量在全局中的值是300,此時(shí)eval()可以訪問(wèn)z,就像它是一個(gè)全局變量一樣。

globals 背后的機(jī)制是相當(dāng)靈活的,可以向 globals 傳遞任何可見的變量(全局、局部、或者非局部)。還可以傳遞自定義的鍵值對(duì),比如上面例子中的 "z": 300,那么eval() 將把它們?nèi)孔鳛槿肿兞刻幚怼?/p>

關(guān)于 globals 中的注意事項(xiàng),如果我們提供給它的自定義字典不包含鍵值 "__builtins__",那么在表達(dá)式被解析之前,對(duì)內(nèi)置字典的引用將自動(dòng)插入 "__builtins__" 下面。這可以確保 eval() 在計(jì)算表達(dá)式時(shí)可以完全訪問(wèn)所有的 Python 內(nèi)置變量名。

下面的例子表明,即使給 globals 提供了一個(gè)空的字典,對(duì) eval() 的調(diào)用仍然可以訪問(wèn) Python 的內(nèi)置變量名。

>>> eval("sum([2, 2, 2])", {})
6
>>> eval("min([1, 2, 3])", {})
1
>>> eval("pow(10, 2)", {})
100

在上面的代碼中,我們向 globals 提供了一個(gè)空的字典 ({})。由于這個(gè)字典不包含一個(gè)叫做 "__builtins__" 的鍵,Python 會(huì)自動(dòng)插入一個(gè)指向 builtins 中名字的引用。這樣,eval() 在解析表達(dá)式時(shí)就可以完全訪問(wèn)所有 Python 的內(nèi)置名字。

如果調(diào)用 eval() 而沒(méi)有將自定義字典傳遞給 globals ,那么參數(shù)將默認(rèn)為在調(diào)用 eval()的環(huán)境中 globals() 返回的字典:

>>>?x?=?100??#??一個(gè)全局變量
>>>?y?=?200??#?另一個(gè)全局變量
>>>?eval("x?+?y")??#?訪問(wèn)兩個(gè)全局變量
300

當(dāng)調(diào)用 eval() 而不提供 globals 參數(shù)時(shí),該函數(shù)使用 globals() 返回的字典作為其全局命名空間來(lái)計(jì)算表達(dá)式。所以,在上面的例子中,我們可以自由地訪問(wèn) x 和 y,因?yàn)樗鼈兪前谖覀儺?dāng)前全局范圍內(nèi)的全局變量。

第三個(gè)參數(shù):locals

Python 的 eval() 第三個(gè)參數(shù) locals ,可選參數(shù),字典類型。此時(shí)這個(gè)字典包含了 eval() 在計(jì)算表達(dá)式時(shí)作為局部變量名使用的變量。

局部變量名是那些我們?cè)谝粋€(gè)給定的函數(shù)內(nèi)定義的名稱(變量、函數(shù)、類等等)。局部名稱只在封閉的函數(shù)內(nèi)可見。我們?cè)诰帉懞瘮?shù)時(shí)定義這些變量名。

因?yàn)?nbsp;eval() 已經(jīng)寫好了,所以不能在它的代碼或局部范圍內(nèi)添加局部變量名。然而可以向 locals 傳遞一個(gè)字典,eval()會(huì)把這些名字當(dāng)作本地名字。

>>>?eval("x?+?100",?{},?{"x":?100})
200
>>>?eval("x?+?y",?{},?{"x":?100})
Traceback?(most?recent?call?last):
??File?"<stdin>",?line?1,?in?<module>
??File?"<string>",?line?1,?in?<module>
NameError:?name?'y'?is?not?defined

第一個(gè)調(diào)用 eval() 的第二個(gè)字典保存了變量 x。這個(gè)變量被 eval() 解釋為一個(gè)局部變量。換句話說(shuō),它被看作是在 eval() 中定義的一個(gè)變量。

我們可以在表達(dá)式中使用 x,并且 eval() 可以訪問(wèn)它。相反,如果使用y,那么會(huì)得到一個(gè) NameError,因?yàn)閥沒(méi)有定義在 globals 命名空間或 locals 命名空間。

和 globals 一樣,可以向 locals 傳遞任何可見的變量(全局、局部或非局部)。也可以傳遞自定義的鍵值對(duì),比如 "x"。eval()將把它們?nèi)孔鳛榫植孔兞刻幚怼?/p>

注意,要給 locals 提供一個(gè)字典,首先需要給 globals 提供一個(gè)字典。不能在 eval() 中使用關(guān)鍵字參數(shù)。

>>>?eval("x?+?100",?locals={"x":?100})
Traceback?(most?recent?call?last):
??File?"<stdin>",?line?1,?in?<module>
TypeError:?eval()?takes?no?keyword?arguments

如果在調(diào)用 eval() 時(shí)使用關(guān)鍵字參數(shù),那么拋出一個(gè) TypeError。這是因?yàn)?nbsp;eval() 不接受關(guān)鍵字參數(shù),所以在提供 locals 字典之前,需要先提供一個(gè) globals 字典。

如果沒(méi)有給 locals 傳遞一個(gè)字典,那么它就默認(rèn)為傳遞給 globals 的字典。這里有一個(gè)例子,給 globals 傳遞了一個(gè)空的字典,而 locals 沒(méi)有傳遞任何值。

>>>?x?=?100
>>>?eval("x?+?100",?{})
Traceback?(most?recent?call?last):
??File?"<stdin>",?line?1,?in?<module>
??File?"<string>",?line?1,?in?<module>
NameError:?name?'x'?is?not?defined

鑒于沒(méi)有給 locals 提供一個(gè)自定義的字典,這個(gè)參數(shù)默認(rèn)為傳遞給 globals 的字典。此時(shí)eval() 無(wú)法訪問(wèn) x,因?yàn)?globals 持有一個(gè)空的字典。

globals 和 locals 之間的主要實(shí)際區(qū)別是,如果"__builtins__"鍵不存在,Python 會(huì)自動(dòng)插入 globals 中。無(wú)論我們是否為 globals 提供了一個(gè)自定義的字典,這都會(huì)發(fā)生。此外,如果我們給 locals 提供了一個(gè)自定義的字典,那么在執(zhí)行 eval() 的過(guò)程中,這個(gè)字典將保持不變。

用 eval() 計(jì)算表達(dá)式

我們可以使用Python的eval()來(lái)計(jì)算任何一種Python表達(dá)式,但不包括Python語(yǔ)句,如基于關(guān)鍵字的復(fù)合語(yǔ)句或賦值語(yǔ)句。

當(dāng)我們需要?jiǎng)討B(tài)地計(jì)算表達(dá)式,而使用其它 Python 技術(shù)或工具會(huì)大大增加我們的開發(fā)時(shí)間和精力時(shí),eval() 可以很方便。

在這一節(jié)中,我們將學(xué)習(xí)如何使用 Python 的 eval() 來(lái)計(jì)算布爾、數(shù)學(xué)和通用的 Python 表達(dá)式。

布爾表達(dá)式

布爾表達(dá)式 是Python表達(dá)式,當(dāng)解釋器對(duì)其進(jìn)行計(jì)算時(shí)返回一個(gè)真值(True 或者 False)。它們通常用在if語(yǔ)句中,以檢查某些條件是否為真或假。由于布爾表達(dá)式不是復(fù)合語(yǔ)句,我們可以使用eval()來(lái)計(jì)算它們。

>>>?x?=?100
>>>?y?=?100
>>>?eval("x?!=?y")
False
>>>?eval("x?<?200?and?y?>?100")
False
>>>?eval("x?is?y")
True
>>>?eval("x?in?{50,?100,?150,?200}")
True

我們可以用 eval() 來(lái)處理使用以下任何Python運(yùn)算符的布爾表達(dá)式。

  • 值比較運(yùn)算符:< , > , <=, >=, ==, !=
  • 邏輯(布爾)運(yùn)算符:and, or, not
  • 成員測(cè)試運(yùn)算符:in, not in
  • 身份運(yùn)算符:is, is not

在所有情況下,該函數(shù)都會(huì)返回正在計(jì)算的表達(dá)式的真值。

我們思考,為什么我應(yīng)該使用eval()而不是直接使用布爾表達(dá)式呢?假設(shè)需要實(shí)現(xiàn)一個(gè)條件語(yǔ)句,但我們想臨時(shí)改變條件。

>>>?def?func(a,?b,?condition):
...?????if?eval(condition):
...?????????return?a?+?b
...?????return?a?-?b
...
>>>?func(2,?4,?"a?>?b")
-2
>>>?func(2,?4,?"a?<?b")
6
>>>?func(2,?2,?"a?is?b")
4

在func()中,使用eval()來(lái)計(jì)算所提供的條件,并根據(jù)計(jì)算的結(jié)果返回a+b或a-b。在上面的例子中,只使用了幾個(gè)不同的條件,但還可以使用任何數(shù)量的其他條件,只要堅(jiān)持使用我們?cè)趂unc()中定義的名稱a和b。

現(xiàn)在想象一下,如果不使用Python的eval(),我們將如何實(shí)現(xiàn)這樣的東西。那會(huì)花更少的代碼和時(shí)間嗎?不可能!

數(shù)學(xué)表達(dá)式

Python 的 eval() 的一個(gè)常見用例是對(duì)基于字符串的輸入進(jìn)行 math 表達(dá)式的計(jì)算。例如,創(chuàng)建一個(gè) Python 計(jì)算器,那么可以使用 eval() 來(lái)計(jì)算用戶的輸入并返回計(jì)算結(jié)果。

下面的例子演示了如何使用eval()與數(shù)學(xué)一起進(jìn)行math運(yùn)算。

>>>?#?Arithmetic?operations
>>>?eval("5?+?7")
12
>>>?eval("5?*?7")
35
>>>?eval("5?**?7")
78125
>>>?eval("(5?+?7)?/?2")
6.0
>>>?import?math
>>>?#?一個(gè)圓的面積
>>>?eval("math.pi?*?pow(25,?2)")
1963.4954084936207
>>>?#?球體的體積
>>>?eval("4?/?3?*?math.pi?*?math.pow(25,?3)")
65449.84694978735
>>>?#?直角三角形的斜邊
>>>?eval("math.sqrt(math.pow(10,?2)?+?math.pow(15,?2))")
18.027756377319946

當(dāng)我們使用eval()來(lái)計(jì)算數(shù)學(xué)表達(dá)式時(shí),我們可以傳入任何種類或復(fù)雜程度的表達(dá)式,eval()會(huì)解析它們,計(jì)算它們,如果一切正常,就會(huì)給我們預(yù)期結(jié)果。

通用表達(dá)式

前面我們已經(jīng)學(xué)會(huì)了如何在布爾和 math 表達(dá)式中使用 eval() 。然而,我們可以在更復(fù)雜的 Python 表達(dá)式中使用 eval() ,這些表達(dá)式包括函數(shù)調(diào)用、對(duì)象創(chuàng)建、屬性訪問(wèn)、列表推導(dǎo)式等等。

例如,可以調(diào)用一個(gè)內(nèi)置函數(shù)或用標(biāo)準(zhǔn)或第三方模塊導(dǎo)入的函數(shù)。

>>>?#?運(yùn)行echo命令
>>>?import?subprocess
>>>?eval("subprocess.getoutput('echo?Hello,?World')")
'Hello,?World'
>>>?#?啟動(dòng)Firefox(如果有的話)
>>>?eval("subprocess.getoutput('firefox')")
''

在這個(gè)例子中,我們使用 Python 的 eval() 來(lái)執(zhí)行一些系統(tǒng)命令。我們可以用這個(gè)功能做大量有用的事情。然而,eval()也會(huì)有一些嚴(yán)重的安全風(fēng)險(xiǎn),比如允許一個(gè)惡意的用戶在我們的機(jī)器中運(yùn)行系統(tǒng)命令或任何任意的代碼。

以上就是Python+eval函數(shù)實(shí)現(xiàn)動(dòng)態(tài)地計(jì)算數(shù)學(xué)表達(dá)式詳解的詳細(xì)內(nèi)容,更多關(guān)于Python eval計(jì)算數(shù)學(xué)表達(dá)式的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python人工智能學(xué)習(xí)PyTorch實(shí)現(xiàn)WGAN示例詳解

    Python人工智能學(xué)習(xí)PyTorch實(shí)現(xiàn)WGAN示例詳解

    這篇文章主要為大家介紹了人工智能學(xué)習(xí)PyTorch實(shí)現(xiàn)WGAN的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • Python中獲取圖片的大小問(wèn)題

    Python中獲取圖片的大小問(wèn)題

    這篇文章主要介紹了Python中獲取圖片的大小問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • python統(tǒng)計(jì)字符的個(gè)數(shù)代碼實(shí)例

    python統(tǒng)計(jì)字符的個(gè)數(shù)代碼實(shí)例

    在本篇文章里小編給大家整理了關(guān)于python統(tǒng)計(jì)字符的個(gè)數(shù)代碼實(shí)例內(nèi)容,需要的朋友們可以參考下。
    2020-02-02
  • Python unittest單元測(cè)試openpyxl實(shí)現(xiàn)過(guò)程解析

    Python unittest單元測(cè)試openpyxl實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了Python unittest單元測(cè)試openpyxl實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • python實(shí)現(xiàn)簡(jiǎn)單圖書管理系統(tǒng)

    python實(shí)現(xiàn)簡(jiǎn)單圖書管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單圖書管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • 關(guān)于Python中異常(Exception)的匯總

    關(guān)于Python中異常(Exception)的匯總

    異常是指程序中的例外,違例情況。異常機(jī)制是指程序出現(xiàn)錯(cuò)誤后,程序的處理方法。當(dāng)出現(xiàn)錯(cuò)誤后,程序的執(zhí)行流程發(fā)生改變,程序的控制權(quán)轉(zhuǎn)移到異常處理。下面這篇文章主要匯總了關(guān)于Python中異常(Exception)的相關(guān)資料,需要的朋友可以參考下。
    2017-01-01
  • 將tensorflow模型打包成PB文件及PB文件讀取方式

    將tensorflow模型打包成PB文件及PB文件讀取方式

    今天小編就為大家分享一篇將tensorflow模型打包成PB文件及PB文件讀取方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • python刪除服務(wù)器文件代碼示例

    python刪除服務(wù)器文件代碼示例

    這篇文章主要介紹了python刪除服務(wù)器文件代碼示例,列舉了兩個(gè)實(shí)例,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • Pytorch保存模型用于測(cè)試和用于繼續(xù)訓(xùn)練的區(qū)別詳解

    Pytorch保存模型用于測(cè)試和用于繼續(xù)訓(xùn)練的區(qū)別詳解

    今天小編就為大家分享一篇Pytorch保存模型用于測(cè)試和用于繼續(xù)訓(xùn)練的區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • Python正則表達(dá)式函數(shù)match()和search()使用全面指南

    Python正則表達(dá)式函數(shù)match()和search()使用全面指南

    在Python中,正則表達(dá)式是強(qiáng)大的工具,能夠用于文本匹配、搜索和替換,re模塊提供了許多函數(shù)來(lái)處理正則表達(dá)式,其中match()和search()是兩個(gè)常用的函數(shù),本文將深入探討這兩個(gè)函數(shù)的用法、區(qū)別和示例,幫助你更好地理解它們的功能
    2024-01-01

最新評(píng)論