python基礎
1.range與xrange的區別
range和xrange都是在循環中使用,輸出結果一樣。 range返回的是一個list對象,而xrange返回的是一個生成器對象(xrange object)。 xrange則不會直接生成一個list,而是每次調用返回其中的一個值,內存空間使用極少,因而性能非常好。 注意:Python 3.x已經去掉xrange,全部用range代替。
2.python中的字典,至少用兩種方法取值與賦值
dict = {'name':'zhangsan','age':'18'}
# 字典中賦值的兩種方法
dict['sex'] = '男'
dict = {'education':'本科'}
# dict['key'] = 'value' 這種給字典賦值的方式不會改變字典的ID;dict = {'key':'value'} 這種給字典賦值的方式會改變字典的ID;
# 從字典中取值的兩種方法
print(dict['name'],dict.get('name'))
# 直接使用dict['key']時,如果對應的key不存在時,會導致報錯keyerror,提示沒有該key的值;
# 而是用dict.get('key') 則不會產生錯誤,解析器返回值如果存在就返回相應的value, 如果不存在就返回None.
3.python的多線程是在什么情況下使用,一般一個進程下是否支持多線程?
幾乎所有的操作系統都支持同時運行多個任務,一個任務通常就是一個程序,每個運行中的程序就是一個進程。當一個程序運行時,內部可能包含多個順序執行流,每個順序執行流就是一個線程。
所有運行中的任務通常都會對應一個進程(Process)。當一個程序進入內存運行時,即變成一個進程。進程是處於運行過程中的程序,並且具有一定的獨立功能。進程是系統進行資源分配調度的一個獨立單位。
一個進程可以擁有多個線程,一個線程必須有一個父進程。線程可以擁有自己的堆棧、自己的程序計數器和自己的局部變量,但不擁有系統資源,它與父進程的其他線程共享該進程所擁有的全部資源。
線程在程序中是獨立的,並發的執行流,而且線程的划分尺度小於進程,使得多線程程序的並發性高。進程在執行過程中擁有獨立的內存單元,而多個線程共享內存,從而極大地提高程序的運行效率。
4.a > b ? a :b 轉化為Python的寫法
a if a > b else b
三元運算符需要三個操作數。
語法為:條件表達式?表達式1:表達式2。
說明:問號前面的位置是判斷的條件,判斷結果為
bool型,為true時調用表達式1,為false時調用表達式2。
5.python的字符串進行去重排序
s1 = set(s) l1 = list(s1) l1.sort() print(''.join(l1))
6.is 與 == 區別
is判斷的是a對象是否就是b對象,是通過id來判斷的。
==判斷的是a對象的值是否和b對象的值相等,是通過value來判斷的。
7.1+2+3+4+.....+100
s = 0 for i in range(1,101): s += i print(s)
8.pass語句的作用
pass語句什么也不做,一般作為占位符或者創建占位程序,pass語句不會執行任何操作。
9.[1,2,3] + [4,5,6]
[1, 2, 3, 4, 5, 6]
10、sort和sorted的區別
sort是應用在list上的方法,sorted可以對所有可迭代的對象(包括字符串)進行排序操作。
對於一個無序列表a,調用a.sort(),對a排序后返回a,sort()函數修改待排序的列表內容。
而對於一個無序列表a,調用sorted(a),對a排序后返回一個新的列表,對a無影響。
11、Python中copy和deepcopy中的區別
deepcopy:深度復制,意思是完全復制然后變成一個新的對象,復制的對象和被復制的對象沒有任何關系,彼此之間無論怎么改變都相互不影響。 copy:淺度復制,意思是並不會產生一個獨立的對象單獨存在,他只是將原有的數據塊打上一個新標簽,所以當原對象被改變的時候,新的對象也就會發生變化。 但是淺度復制后,當原對象的父對象發生改變時,新對象不變;當原對象的子對象發生改變時,新對象也發生改變。 import copy e = [1,2,3,4,['q','w']] f = copy.copy(e) g = copy.deepcopy(e) e.append('k') e[4].append(22) print(e) print(f)
12、python中的裝飾器?裝飾器的作用?
裝飾器是修飾其他函數的功能的函數,他們有助於讓我們的代碼更簡短。 裝飾器本質上是一個 Python函數或類,它可以讓其他函數或類在不需要做任何代碼修改的前提下增加額外功能,裝飾器的返回值也是一個函數/類對象。
它經常用於有切面需求的場景,比如:插入日志、性能測試、事務處理、緩存、權限校驗
等場景,裝飾器是解決這類問題的絕佳設計。有了裝飾器,我們就可以抽離出大量與函數功能本身無關的雷同代碼到裝飾器中並繼續重用。 概括的講,裝飾器的作用就是為已經存在的對象添加額外的功能。
13、python是否支持多態?
多態指的是一類事物有多種形態,(一個抽象類有多個子類,因而多態的概念依賴於繼承);多態性是指具有不同功能的函數可以使用相同的函數名,這樣就可
以用一個函數名調用不同內容的函數。在面向對象方法中一般是這樣表述多態性:向不同的對象發送同一條消息,不同的對象在接收時會產生不同的行為(即方
法)。也就是說,每個對象可以用自己的方式去響應共同的消息。所謂消息,就是調用函數,不同的行為就是指不同的實現,即執行不同的函數。
14、python的匿名函數?
對lambda函數,它其實是一個類似於def的函數,只不過lambda是一個不需要定義函數名的匿名函數。當我們在有些時候,需要做一些簡單的數學計算時,如果定
義一個def函數顯得過於繁瑣,但是不定義一個類似“函數”的對象,又顯得不太方便,所以這里lambda函數就派上用場了。
15、python是否支持多重繼承?
在Python中是支持多重繼承的,也就是我們可以為一個類同時指定多個父類。可以在類名的()后邊添加多個類,來實現多重繼承。
多重繼承,會使子類同時擁有多個父類,並且會獲取到所有父類中的方法。
在沒有特殊的情況,應該盡量避免使用多重繼承,因為多重繼承會讓我們的代碼過於復雜。如果多個父類中有同名的方法,則會先在第一個父類中尋找,然后找第二個,
最后找第三個。前邊父類的方法會覆蓋后邊父類的方法
16、python的接口自動化測試框架說明
接口自動化項目框架說明: common目錄:用來存放的是自己封裝的類(操作Excel類、日志類、配置文件、發送郵件、操作數據庫的類) con目錄:用來存放配置文件(測試環境、發布環境、生產環境) librarys目錄:用來存放已封裝好的模塊(HTMLtestrunner、ddt),如果需要的話,可以對這些類進行二次開發 logs目錄:用來存放日志文件 reposts目錄:用來存放生成的的測試報告 data目錄:用來存放測試用例數據 testcases目錄:用來存放所有的測試用例模塊 測試用例的執行,創建一個testsuite.py測試集合文件 1、創建一個測試集合 suite = unittest.TestSuite() 2、創建一個loader,通過目錄將測試用例加載至測試集合中 loader = unittest.TestLoader() suite.addTest(loader.discover(TESTCASES_DIR)) 3、打開一個文件,生成測試報告,執行測試集合 runner.run(suite) with open(os.path.join(REPORTS_DIR,reportname),'wb') as f: runner = HTMLTestRunner(stream = f, verbosity = 2, title = reporttitle, description = reportdescription, tester = reporttester) runner.run(suite)
持續集成:
持續集成指的是,頻繁地(一天多次)將代碼集成到主干。
(1)快速發現錯誤。
(2)防止分支大幅偏離主干。
jenkins的作用?以及你對jenkins的了解?
1.持續的軟件版本發布/測試項目。 2.監控外部調用執行的工作。
編譯打包、部署,持續集成,持續交付,可以與自動化測試集成
在devops過程中,自動化測試在什么時候開始做最好?
DevOps實踐模型中很重要的三點:測試一切、測試驅動開發、測試自動化; 1)測試一切 文檔、配置、環境、發布包,一切代碼都要測試。 2)測試驅動開發 測試提前,敏捷協作,測試用例同步開發。 3)測試自動化 多種測試技術能力、組件化開發、統一管理,不間斷測試執行。 為了實現測試驅動開發、測試自動化,我們認為需要以下四個要素: 1)敏捷協作的過程 2)測試設計方法 3)全棧測試團隊 4)自動化測試服務
devops工具用到了哪些?
五種最流行、功能最強大的 DevOps 工具:
Terraform
Ansible
Packer
Docker
Kubernetes
配置管理的流程是為了什么?
配置管理流程編輯配置管理制定配置管理計划配置管理員制定《配置管理計划》,主要內容包括配置管理軟硬件資源、配置項計划、基線計划、交付計划、備份計划等
dockerfile的作用?
DockerFile是用來構建Docker鏡像的構建文件,是由一系列命令和參數構成的腳本
docker與虛擬化的區別?
1.占用服務器資源少 2.啟動速度快
docker退出時,我的文件是否會丟失?
除非你使用了數據卷(Volume)或數據容器,否則容器內運行期間產生的數據在容器關閉后,又回到你啟動容器時的原始鏡像狀態.
