成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

進階Python,從編寫Python函數開始

開發
好多同學都有這樣的疑惑,我學習了python的基礎語法,那么具體應用該從哪里入手呢?首先大家要確定,代碼必須用起來才能越來越熟練!

 讀懂十行代碼不如自己親自上手編寫一行!代碼想熟練最好的方法就是能夠通過代碼解決工作中的實際問題,例如完成UI自動化測試、接口測試、創建測試數據、構建測試環境、清理數據環境等等。上述這些場景我們都可以從把要解決的問題封裝成函數開始,例如我用ui自動化進行登陸,可以把登陸的幾行代碼封裝成函數login(p_user,p_pwd),做接口測試可以把常用的get和post方法封裝成 get(p_url)和post(p_url,p_data)。在這里我會詳細的講解python中關于函數的基礎知識,最后以selenium 進行百度搜索為例來講解自動化測試中如何把具體業務封裝成方法實現代碼復用,相信大家一定會有所收獲!

​函數基礎知識
函數的本質就是代碼復用,在面向對象中把函數稱為方法。Python提供了許多內建函數,比如

print()。我們也可以自己創建函數,這被叫做用戶自定義函數。以下是函數定義的簡單規則:

  • 函數代碼塊以def關鍵詞開頭,后接函數標識符名稱和圓括號()。
  • 圓括號之間用于定義參數。
  • 函數內容以冒號起始,并且縮進。
  • return [表達式] 結束函數,選擇性地返回一個值給調用方。不帶表達式的return相當于返回None

例如:

  1. def func(): 
  2.        print("函數實例"
  3. func() 

輸出結果是:

函數實例

函數的參數
形參和實參

定義一個帶參數的函數,如下:

  1. def func_para(p_str): 
  2.        print(p_str) 

在函數func_para中,p_str就是一個形參,也就是形式參數,是用來接收調用函數時傳入的參數,你傳的是什么它就是什么。實參就是實際參數,在調用函數的時候,傳遞是Kevin,那么Kevin就是實參,傳遞的是Mike,那么Mike也是實參,實參傳遞給函數后,會賦值給函數中的形參

把實參Kevin,賦值給函數,即func_para(“Kevin”),輸出結果是Kevin

把實參Mike,賦值給函數,即func_para(“Mike”),輸出結果是Mike

函數的返回值
調用方運行函數會得到一個值。首先說明,所有的函數都是有返回值的,如果編程人員沒有指定返回值,那默認會返回None。

例如:

  1. def func_return(p_str): 
  2.     return p_str 
  3. str=func_return (“Kevin”)print(str) 

運行結果

Kevin

函數高級用法
以上是python中函數最基礎的定義,相信絕大多數同學都知道,接下來我會給大家介紹一些在python中函數的高級用法

參數的默認值
python允許我們給函數的形參設置一個默認值,不傳參數調用的話,就統一默認是這個值。

  1. def func_default(name='kevin'): 
  2.       print("名字是"+name
  3. func_default() 
  4. func_default("mike"

輸出:

名字是kevin

名字是mike

關鍵字參數
關鍵字參數讓你可以不用考慮函數的參數位置,你需以鍵值對的形式指定參數的對應形參。

  1. def func_key(name,age): 
  2.        print("你好"name+", 你的年齡是"+age+" !"
  3. func_key(age='38',name='kevin'

輸出:

你好kevin, 你的年齡是38 !

不固定長度參數
有時候我們需要允許用戶提供任意數量的參數,函數的形參可以帶個星號來接收,不管調用函數的時候傳遞了多少實參,都將被收集到形參這個變量當中,形參的類型是元組。例如:

  1. def fun_unfixedlength_1 (*args): 
  2.         print(args)fun_unfixedlength_1 ('kevin','38','67674297'

輸出

('kevin', '38', '67674297')

還有一種是帶兩個星號的形參,用于接收鍵值對形式的實參,導入到函數中的類型是字典。

  1. def fun_unfixedlength_2 (**args): 
  2.       print(args)fun_unfixedlength_2(name='kevin',age='38',qq='67674297'

輸出

{'name': 'kevin', 'age':'38', 'qq': '67674297'}

匿名函數
匿名函數就是不用走正常函數定義的流程,可以直接定義一個簡單的函數并把函數本身賦值給一個變量,使得這個變量可以像函數一樣被調用,在python中可以用lambda關鍵字來申明定義一個匿名函數。例如

  1. lambda_demo = lambda first_name,last_name : first_name + " "+last_name 
  2. name = lambda_demo('kevin','li'
  3. print(name

輸出kevin li

函數實際應用
最后我結合ui自動化測試給大家舉一個函數在測試工作中的實際應用。我們以selenium 進行百度搜索為例,selenium的核心代碼如下:

  1. driver.get("https://www.baidu.com/"
  2. driver.find_element_by_id("kw").clear() 
  3. driver.find_element_by_id("kw").send_keys("selenium")  #輸入框輸入selenium 
  4. driver.find_element_by_id("su").click()  #點擊搜索按鈕 

備注:我的頭條中有很多文章講解了關于selenium應用的具體方法,在這里就不再贅述了。可以參考:

一文搞定Java和Python在Selenium3中的應用

Selenium原理精講

場景分析:由于搜索的關鍵字是千變萬化的,而進行搜索的動作是固定的,即:打開百度網頁>在輸入框輸入關鍵字>點擊百度一下搜索按鈕。所以我們可以把該場景編寫為函數,用一個函數來處理進行各種關鍵字搜索的需求。核心代碼實現如下:

  1. def baidu_search(p_key): 
  2.     driver.get("https://www.baidu.com/"
  3.     driver.find_element_by_id("kw").clear() 
  4.     driver.find_element_by_id("kw").send_keys(p_key)  # 輸入框輸入selenium 
  5.     driver.find_element_by_id("su").click()  # 點擊搜索按鈕 

如果大家想通過函數來檢查是否找到了需要搜索的關鍵字,那么可以對函數進行改進,如果在搜索結果頁面中出現了“百度為您找到相關結果約*個”的文字證明搜索到了關鍵字返回True,否則返回

False,如下圖所示:

 

改進后的代碼方法如下:

  1. def baidu_search(p_key): 
  2.     driver.get("https://www.baidu.com/"
  3.     driver.find_element_by_id("kw").clear() 
  4.     driver.find_element_by_id("kw").send_keys(p_key)  # 輸入框輸入selenium 
  5.     driver.find_element_by_id("su").click()  # 點擊搜索按鈕 
  6.     time.sleep(3) 
  7. try: 
  8.        result=driver.find_elements_by_class_name("nums_text").get_attribute('value') #獲取搜索結果的統計個數值,默認是:百度為您找到相關結果約...個 
  9.        if re.match('百度為您找到相關結果約.*個', result)is None:  #通過正則進行匹配,沒匹配到正則返回None 
  10.            return False 
  11.        else
  12.            return True 
  13.     exceptNoSuchElementException as e: 
  14.            return False 
  15.     return True 

 

 

 

 

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2023-12-14 15:31:43

函數式編程python編程

2025-06-11 08:00:00

LambdaPython函數

2020-04-28 10:40:54

Python開發工具

2021-12-12 18:15:06

Python并發編程

2014-02-01 21:25:08

Python數組

2023-11-01 08:35:56

Python函數

2023-12-26 08:40:06

分類算法數據分析Python

2018-11-15 10:20:59

Python函數式編程編程語言

2018-12-06 08:40:43

PythonR函數編程語言

2023-06-19 14:14:24

Rust程序Web

2024-12-17 09:00:00

lambda函數Python

2018-08-15 10:51:01

JavaSpring MVC框架

2020-05-21 14:03:21

python編程代碼

2024-02-22 10:14:40

Filter函數Python

2023-09-19 23:07:53

Python算法

2024-04-01 09:32:23

AccumulatePython工具

2024-03-21 09:51:22

Python爬蟲瀏覽網站

2009-07-08 18:28:57

惠普刀片刀片服務器

2010-03-26 15:14:26

Python編寫

2024-12-17 08:04:04

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区三区不卡视频 | 欧美一区二区在线 | 99久久精品国产毛片 | 伦理二区 | 5060网一级毛片| 欧美综合一区二区 | 欧美综合自拍 | 亚洲精品888 | 免费一级毛片 | 亚洲精品久久久9婷婷中文字幕 | 成在线人视频免费视频 | 精品视频99 | 久久国产三级 | 欧美a∨| 成人网视频 | 欧美在线观看一区 | 日韩网站在线 | 日日操夜夜操天天操 | www.久久.com| 91精品国产欧美一区二区 | 久久中文字幕在线 | 中文字幕精品一区二区三区精品 | 福利视频网址 | 日韩国产专区 | a在线观看免费 | 国产欧美一区二区精品忘忧草 | 精品美女| 超碰免费在线观看 | 欧美中文一区 | 久久久久久精 | 亚洲精品视频二区 | 久久机热 | 羞视频在线观看 | 欧美在线观看一区 | 国产91中文| 91视频电影 | 亚洲高清在线观看 | 在线观看免费国产 | 欧美一区二区三区四区五区无卡码 | 国产综合精品一区二区三区 | 亚洲欧洲在线视频 |