導航:首頁 > 編程語言 > python封裝函數兩個值

python封裝函數兩個值

發布時間:2023-08-19 16:19:22

python定義函數求兩個整數的最大值

 >>>defmax(a,b):
returnaifa>=belseb
>>>a,b,c,d=14,9,2,6
>>>max(a,b)
14
>>>max(a,max(b,c))
14
>>>max(max(a,b),max(c,d))
14

祝你成功!

Ⅱ 如何在PYTHON 中寫一個函數交換兩個變數的值

python交換兩個變數的值很簡單,a,b = b,a 就可以,寫成函數,代碼如下:

defjh(a,b):
returnb,a

x=1
y=2
x,y=jh(x,y)
print(x,y)

執行結果如下:

Ⅲ python中一個函數可以返回多個值嗎

可以的。返回值下載return上,調用時用兩個變數接收。
def F ( x, y ):
return x+y, x-y

a, b = F( 9, 4)

Ⅳ 使用python簡單封裝selenium常用函數

年前走查腳本代碼時,發現大家對selenium功能都在重復造輪子,而且容易出現一些常見低級bug。於是在閑暇之餘,封裝一些常用的selenium功能。

在某些網頁中,存在多個frame嵌套。而selenium提供的find_element函數只能在當前frame中查找,不能切換到其他frame中,需要從最上級frame中逐步切換(當然也可以指定xpath的絕對路徑,但是一般沒人這么做)。在我們寫代碼過程中,需要明確知道當前frame位置和需要尋找元素的frame位置。在frame切換過程中,容易因為疏忽導致frame切換錯誤導致元素無法找到的bug。

頁面中分布的frame,可以理解為樹狀結構。因此我們可以採用遞歸的方式, 沿著某條搜索路線frame節點,依次對樹中每個節點均做一次訪問。

我們以163網址上的登錄框為例:點擊登錄按鈕,彈出登錄iframe頁面。輸入框位置在iframe中,因此我們不能使用xpath獲取元素位置,需要進入iframe中,然後獲取元素。

手動切換ifame可能會產生bug,因此需要一套自動切換和檢索frame的機制。具體代碼如下:

需要注意的是:如果頁面中多個frame中,存在相同的xpath元素。還是需要指定frame的路徑,否則會返回搜索到的第一個元素。

強制等待

直接調用系統time.sleep函數,不管頁面載入情況一定會等待指定的時間, 即使元素已被載入 。

1.如果設置的時間較長,會浪費時間

2.如果設置的時間較短,元素可能沒有載入。

頁面中某元素如果未能立即載入,隱式等待告訴WebDriver需等待一定的時間,然後去查找元素。默認不等待,隱式等待作用於整個WebDriver周期,只需設置一次即可。

1.在上文的find_element函數中,採用遞歸方式在所有frame尋找元素。若採用隱式等待,則在每個frame中都需要等待設定的時間,耗時非常長。

2.某些頁面我們想要的元素已經載入完畢,但是部分其他資源未載入。隱式等待必須等待所有元素載入完畢,增加額外等待時間。

顯示等待一般作用於某一個元素,在設定的時間范圍內,默認每間隔0.5秒查找元素。返回被載入的元素,若超過設定的時間范圍未能查找則報錯。顯示等待作為selenium常用的等待機制,我們來看下他的源碼和機制。

driver 注釋中解釋為WebDriver實例,但是代碼中並未有相關檢測,因此可以傳入任何對象

但是__repr__函數中使用到session_id屬性,如果需要顯示屬性或者轉為str對象,最好在driver對象中添加session_id屬性

在until函數中,我們可以看到driver對象傳入method函數。在計時結束前,在不斷循環執行method函數,如果method函數有正常返回值則退出循環,否則報TimeoutException錯誤。

可以採用裝飾器對隱式等待進行封裝,這樣代碼更加精簡

同樣的,採用裝飾器對其他常用的函數進行封裝,例如強制等待、點擊、輸入文本等。

裝飾器雖然很方便,但也會產生一些麻煩。例如在find_element函數遞歸調用過程中,理應只要執行一次裝飾器函數。但因為裝飾器已經裝飾完畢,導致每次遞歸都會執行。例如強制等待的sleep函數,如果遞歸次數越多等待時間越長。

解除裝飾器一般有兩種做法:一是約定參數,當遞歸第二次調用時則不生效。例如

這種方式實現簡單,容易理解。但是增加了參數限制,在fun函數中就不能使用first_sleep參數。

二是採用裝飾器採用wrapped實現,通過訪問wrapped屬性獲得原始函數。例如

但是某一個函數被多個裝飾器裝飾時,需要遞歸解除裝飾器。例如

最後整體代碼如下

這次的封裝其實還存在很多問題

1.find_element函數不僅僅只是提供查找元素功能,還提供一些其他功能,因此叫element_operation更為合適。

2.find_element函數的參數過多,並且很多參數的使用並不在函數本身中,對代碼閱讀很不友好。

3.得小心避免參數重復問題,假設裝飾器sleep和裝飾器wait_time都使用time這個參數,將無法區分具體是哪個函數使用。

4.不利於擴展和維護,當功能過多時find_element的參數過於龐大。

如果只是簡單地封裝和使用,上面這種方式也能達到較好的效果。如果想進一步封裝,建議採用鏈式調用方式,裝飾器輔助封裝。例如

這樣函數的擴展性和可閱讀性有較大的提升

Ⅳ python同一行輸出兩個整數求解最大值和最小值

可以使用Python內置函數min和max來求解最小值和最大值,然後使用print函數在同一行輸出兩個整數。
例如,如果要找橋此出2和5中的最大值和最小值,可敏穗迅以使用以下代碼:
a = 2
b = 5
print("最大值:", max(a, b), " 最小值:", min(a, b))
輸出結果為族睜:
最大值: 5 最小值: 2

閱讀全文

與python封裝函數兩個值相關的資料

熱點內容
8051單片機包含多大的ram 瀏覽:811
man文件linux 瀏覽:282
javaweb實現頁面跳轉 瀏覽:125
命令如什麼 瀏覽:315
centos如何使用ftp伺服器 瀏覽:981
直立車陀螺儀演算法 瀏覽:69
coreldrawpdf下載 瀏覽:895
虛擬主機雲伺服器軟體服務 瀏覽:370
蘋果的怎麼拉安卓的打游戲 瀏覽:412
游戲程序員負責角色 瀏覽:313
於丹pdf 瀏覽:716
反編譯ref 瀏覽:550
鴻蒙智能文件夾怎麼弄 瀏覽:547
grunt壓縮html 瀏覽:791
macpdfword轉換器 瀏覽:907
壓縮面膜是什麼材質 瀏覽:355
抖音發布作品怎麼建文件夾 瀏覽:17
安卓如何更改谷歌地區 瀏覽:276
airpods為什麼安卓連上聲音很大 瀏覽:514
聯想伺服器按鈕怎麼開不了機 瀏覽:99