python基礎總結

一,基礎語法java

1,輸入與輸出python

1.1 代碼中要修改不可變數據會出現什麼問題?拋出什麼異常?mysql

答:代碼不會正常運行,拋出TypeError異常。sql

1.2 a=1,b=2,不用中間變量交換a和b的值?數據庫

答:
flask

方法一:app

1. a=a+bdom

2. b=a-bscrapy

3. a=a-b函數

方法二:

a=a^b

b=b^a

a=a^b

方法三:

a,b = b,a

1.3 print調用Python中底層的什麼方法?

答:print方法默認調用sys.stdout.write方法,即往控制檯打印字符串。

1.4 簡述你對input()函數的理解?

在Python3中,input()獲取用戶輸入,不論用戶輸入的是什麼,獲取到的都是字符串類型的。

在Python2中有raw_input()和input(),raw_input()和Python3中的input()做用是同樣的,input()輸入的是什麼數據類型的,獲取到的就是什麼數據類型的。

1.5 Python2中range和xrange的區別?

答:二者用法相同,不一樣的是range返回的結果是一個列表,而xrange的結果是一個生成器,前者是直接開闢一塊內存空間來保存列表,後者是邊循環邊使用,只有使用時纔會開闢內存空間,因此當列表很長時,使用xrange性能要比range好。

1.6  read、readline和readlines的區別?

答:read讀取整個文件。

readline:讀取下一行,使用生成器方法。

readlines:讀取整個文件到一個迭代器以供咱們遍歷。

1.7 異常

在except中return後還會不會執行finally中的代碼?怎麼拋出自定義異常?

答:會繼續處理finally中的代碼;用raise方法能夠拋出自定義異常。

1.8 介紹一下except的做用和用法?

答:except:#捕獲全部異常

except:<異常名>:#捕獲指定異常

except:<異常名1,異常名2>:捕獲異常1      或者異常2

except:<異常名>,<數據>:捕獲指定異常及其附加的數據

except:<異常名1,異常名2>:<數據>:捕獲異常名1或者異常名2及其附加的數據

2 模塊與包

2.1 經常使用的Python標準庫都有哪些?

答:os操做系統,time時間,random隨機數,pymysql鏈接數據庫,threading線程,multiprocessing進程,queue隊列等。

第三方庫:

Django和flask也是第三方庫,requests,virtualenv,selenium,scrapy,xadmin,celery,re,hashlib,md5.

經常使用的科學計算庫(如Numpy,Scipy,Pandas).

2.2 賦值,淺拷貝和深拷貝的區別?

1、賦值

在Python中,對象的賦值就是簡單的對象引用,這點和C++不一樣,以下所示:

a = [1,2,"hello",['python','C++']]
b = a

在上述狀況下,a和b是同樣的,他們指向同一片內存,b不過是a的別名,是引用。

咱們可使用b is a 去判斷,返回true,代表他們地址相同,內容相同,也可使用id()函數來查看兩個列表的地址是否相同。

賦值操做(包括對象做爲參數,返回值)不會開闢新的內存空間,它只是複製了對象的引用。也就是說除了b這個名字以外,沒有其餘的內存開銷。修改了a,也就影響了b,同理,修改了b也就影響了a.

二,淺拷貝(shallow copy)

淺拷貝會建立新對象,其內容非原對象自己的引用,而是原對象內第一層對象的引用。

淺拷貝有三種形式:切片操做,工廠函數,copy模塊中的copy函數。

好比上述的列表a;

切片操做:b = a[:]或者b = [x for x in a];

工廠函數:b = list(a);

copy函數:b = copy.copy(a);

淺拷貝產生的列表b再也不是列表a了,使用is判斷能夠發現他們不是同一個對象,使用id查看,他們也不指向同一片內存空間。可是當咱們使用id(x)for x in a 和id(x) for x in b 來查看a和b中元素的地址時,能夠看到兩者包含的元素的地址是相同的。

在這種狀況下,列表a和b是不一樣的對象,修改列表b理論上不會影響到列表a.

可是要注意的是,淺拷貝之因此稱之爲淺拷貝,是它僅僅只拷貝了一層,在列表a中有一個嵌套的list,若是咱們修改了它,狀況就不同了。

好比:a[3].append('java')。查看列表b,會發現列表b也發生了變化,這是由於,咱們修改了嵌套的list,修改外層元素,會修改它的引用,讓它們指向別的位置,修改嵌套列表中的元素,列表的地址並未發生變化,指向的都是用一個位置。

相關文章
相關標籤/搜索