版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、學(xué)習(xí)資料1. Python 是如何進(jìn)行內(nèi)存管理的?答: 從三個(gè)方面來說 ,一對象的引用計(jì)數(shù)機(jī)制 ,二垃圾回收機(jī)制 ,三內(nèi)存池機(jī)制一、對象的引用計(jì)數(shù)機(jī)制python 內(nèi)部使用引用計(jì)數(shù),來保持追蹤內(nèi)存中的對象,所有對象都有引用計(jì)數(shù)。引用計(jì)數(shù)增加的情況:1,一個(gè)對象分配一個(gè)新名稱2,將其放入一個(gè)容器中(如列表、元組或字典)引用計(jì)數(shù)減少的情況:1,使用 del 語句對對象別名顯示的銷毀2,引用超出作用域或被重新賦值sys.getrefcount( ) 函數(shù)可以獲得對象的當(dāng)前引用計(jì)數(shù)多數(shù)情況下,引用計(jì)數(shù)比你猜測得要大得多。對于不可變數(shù)據(jù)(如數(shù)字和字符串),解釋器會(huì)在程序的不同部分共享內(nèi)存,以便節(jié)約內(nèi)存。
2、二、垃圾回收1,當(dāng)一個(gè)對象的引用計(jì)數(shù)歸零時(shí),它將被垃圾收集機(jī)制處理掉。2,當(dāng)兩個(gè)對象 a 和 b 相互引用時(shí), del 語句可以減少 a 和 b 的引用計(jì)數(shù), 并銷毀用于引用底層對象的名稱。然而由于每個(gè)對象都包含一個(gè)對其他對象的應(yīng)用,因此引用計(jì)數(shù)不會(huì)歸零,對象也不會(huì)銷毀。 (從而導(dǎo)致內(nèi)存泄露) 。為解決這一問題, 解釋器會(huì)定期執(zhí)行一個(gè)循環(huán)檢測器,搜索不可訪問對象的循環(huán)并刪除它們。三、內(nèi)存池機(jī)制Python 提供了對內(nèi)存的垃圾收集機(jī)制,但是它將不用的內(nèi)存放到內(nèi)存池而不是返回給操作系統(tǒng)。1,Pymalloc 機(jī)制。為了加速 Python 的執(zhí)行效率, Python 引入了一個(gè)內(nèi)存池機(jī)制,用于管理對
3、小塊內(nèi)存的申請和釋放。2,Python 中所有小于 256 個(gè)字節(jié)的對象都使用 pymalloc 實(shí)現(xiàn)的分配器, 而大的對象則使用系統(tǒng)的 malloc 。精品文檔學(xué)習(xí)資料3,對于 Python 對象,如整數(shù),浮點(diǎn)數(shù)和List,都有其獨(dú)立的私有內(nèi)存池,對象間不共享他們的內(nèi)存池。 也就是說如果你分配又釋放了大量的整數(shù), 用于緩存這些整數(shù)的內(nèi)存就不能再分配給浮點(diǎn)數(shù)。2. 什么是 lambda 函數(shù)?它有什么好處 ?答: lambda 表達(dá)式,通常是在需要一個(gè)函數(shù),但是又不想費(fèi)神去命名一個(gè)函數(shù)的場合下使用,也就是指匿名函數(shù)lambda 函數(shù):首要用途是指點(diǎn)短小的回調(diào)函數(shù)lambda arguments
4、:expression>>> a=lambdax,y:x+y>>> a(3,11)3. Python 里面如何實(shí)現(xiàn) tuple 和 list 的轉(zhuǎn)換?答:直接使用 tuple 和 list 函數(shù)就行了, type() 可以判斷對象的類型4. 請寫出一段 Python 代碼實(shí)現(xiàn)刪除一個(gè) list 里面的重復(fù)元素答:1,使用 set 函數(shù), set(list)2,使用字典函數(shù),>>>a=1,2,4,2,4,5,6,5,7,8,9,0>>> b=>>>b=b.fromkeys(a)>>>c=l
5、ist(b.keys()>>> c5. 編程用 sort 進(jìn)行排序,然后從最后一個(gè)元素開始判斷a=1,2,4,2,4,5,7,10,5,5,7,8,9,0,3精品文檔學(xué)習(xí)資料a.sort()last=a-1for i inrange(len(a)-2,-1,-1):if last=ai:del aielse:last=aiprint(a)6. Python 里面如何拷貝一個(gè)對象?(賦值,淺拷貝,深拷貝的區(qū)別)答:賦值( =),就是創(chuàng)建了對象的一個(gè)新的引用,修改其中任意一個(gè)變量都會(huì)影響到另一個(gè)。淺拷貝: 創(chuàng)建一個(gè)新的對象,但它包含的是對原始對象中包含項(xiàng)的引用(如果用引用的方式修
6、改其中一個(gè)對象,另外一個(gè)也會(huì)修改改變)1,完全切片方法;2,工廠函數(shù),如list() ; 3,copy 模塊的 copy()函數(shù) 深拷貝:創(chuàng)建一個(gè)新的對象,并且遞歸的復(fù)制它所包含的對象(修改其中一個(gè),另外一個(gè)不會(huì)改變) copy 模塊的 deep.deepcopy() 函數(shù) 7.介紹一下except 的用法和作用?答: tryexceptexceptelsefinally執(zhí)行 try 下的語句, 如果引發(fā)異常, 則執(zhí)行過程會(huì)跳到 except 語句。對每個(gè) except 分支順序嘗試執(zhí)行, 如果引發(fā)的異常與 except 中的異常組匹配, 執(zhí)行相應(yīng)的語句。 如果所有的 except都不匹配,則
7、異常會(huì)傳遞到下一個(gè)調(diào)用本代碼的最高層try 代碼中。try 下的語句正常執(zhí)行,則執(zhí)行else 塊代碼。如果發(fā)生異常,就不會(huì)執(zhí)行如果存在finally 語句,最后總是會(huì)執(zhí)行。8. Python 中 pass 語句的作用是什么?答: pass 語句不會(huì)執(zhí)行任何操作,一般作為占位符或者創(chuàng)建占位程序,whileFalse:pass9. 介紹一下 Python 下 range()函數(shù)的用法?答:列出一組數(shù)據(jù),經(jīng)常用在forin range()循環(huán)中精品文檔學(xué)習(xí)資料10. 如何用 Python 來進(jìn)行查詢和替換一個(gè)文本字符串?答:可以使用re 模塊中的sub()函數(shù)或者subn()函數(shù)來進(jìn)行查詢和替換,格
8、式: sub(replacement, string,count=0) ( replacement 是被替換成的文本, string 是需要被替換的文本, count 是一個(gè)可選參數(shù),指最大被替換的數(shù)量)>>> import re>>>p=pile( blue|white|red)>>>print(p.sub( colour ,'blue socks and red shoes )colour socks and colourshoes>>>print(p.sub( colour ,'blue socks
9、and red shoes ,count=1)colour socks and redshoessubn()方法執(zhí)行的效果跟 sub()一樣,不過它會(huì)返回一個(gè)二維數(shù)組, 包括替換后的新的字符串和總共替換的數(shù)量11. Python 里面 match() 和 search()的區(qū)別?答: re 模塊中 match(pattern,string,flags), 檢查 string 的開頭是否與pattern 匹配。re 模塊中 research(pattern,string,flags), 在 string 搜索 pattern 的第一個(gè)匹配值。>>>print(re.match(
10、 super , superstition ).span()(0, 5)>>>print(re.match( super , insuperable )None>>>print(re.search( super , superstition ).span()(0, 5)>>>print(re.search( super , insuperable ).span()(2, 7)精品文檔學(xué)習(xí)資料12. 用 Python 匹配 HTML tag 的時(shí)候, <.*>和 <.*?> 有什么區(qū)別?答:術(shù)語叫貪婪匹配 ( <
11、.*> ) 和非貪婪匹配 (<.*?> )例如 :<div><span>test</span></div><.*> :<div><span>test</span></div><.*?> :<div>13. Python 里面如何生成隨機(jī)數(shù)?答: random 模塊隨機(jī)整數(shù): random.randint(a,b) :返回隨機(jī)整數(shù) x,a<=x<=brandom.randrange(start,stop,step) :返回一個(gè)范圍在 (
12、start,stop,step) 之間的隨機(jī)整數(shù),不包括結(jié)束值。隨機(jī)實(shí)數(shù): random.random( ): 返回 0 到 1 之間的浮點(diǎn)數(shù)random.uniform(a,b): 返回指定范圍內(nèi)的浮點(diǎn)數(shù)。14. 有沒有一個(gè)工具可以幫助查找python 的 bug 和進(jìn)行靜態(tài)的代碼分析?答:PyChecker 是一個(gè) python 代碼的靜態(tài)分析工具, 它可以幫助查找 python 代碼的 bug, 會(huì)對代碼的復(fù)雜度和格式提出警告Pylint 是另外一個(gè)工具可以進(jìn)行codingstandard 檢查15. 如何在一個(gè) function 里面設(shè)置一個(gè)全局的變量?答:解決方法是在 functio
13、n 的開始插入一個(gè) global 聲明:def f()global x16. 單引號,雙引號,三引號的區(qū)別答:單引號和雙引號是等效的,如果要換行,需要符號(), 三引號則可以直接換行,并且可以包含注釋如果要表示Let s go 這個(gè)字符串單引號: s4 = s go精品文檔學(xué)習(xí)資料雙引號: s5 = “ Let s go”s6 = I realy like“ python ” ! 這就是單引號和雙引號都可以表示字符串的原因了17. 如何用 Python 來發(fā)送郵件?可以使用smtplib 標(biāo)準(zhǔn)庫。以下代碼可以在支持SMTP 監(jiān)聽器的服務(wù)器上執(zhí)行。import sys, smtplibfroma
14、ddr =raw_input(“ From: “)toaddrs = raw_input(“ To: “ ).split(, )print “ Enter message, end with D:”msg =”while 1:line = sys.stdin.readline()if not line:breakmsg = msg + line# 發(fā)送郵件部分server = smtplib.SMTP( localhost)server.sendmail(fromaddr, toaddrs, msg)server.quit()18.Python 如何實(shí)現(xiàn)單例模式?其他23 種設(shè)計(jì)模式 pyth
15、on 如何實(shí)現(xiàn)?Python 有兩種方式可以實(shí)現(xiàn)單例模式,下面兩個(gè)例子使用了不同的方式實(shí)現(xiàn)單例模式:1.class Singleton(type):def _init_(cls, name, bases, dict):super(Singleton, cls)._init_(name, bases, dict)cls.instance = Nonedef _call_(cls, *args,*kw):if cls.instance is None:cls.instance = super(Singleton, cls)._call_(*args, *kw)return cls.instance
16、class MyClass(object):精品文檔學(xué)習(xí)資料_metaclass_ = Singletonprint MyClass()print MyClass()2. 使用 decorator 來實(shí)現(xiàn)單例模式def singleton(cls):instances = def getinstance():if cls not in instances:instancescls = cls()return instancesclsreturn getinstancesingletonclass MyClass:19. 華為一道編程有兩個(gè)序列a,b,大小都為n,序列元素的值任意整形數(shù),無序;要
17、求:通過交換a,b 中的元素,使 序列 a 元素的和 與序列 b 元素的和 之間的差最小。1. 將兩序列合并為一個(gè)序列,并排序,為序列Source2. 拿出最大元素 Big,次大的元素 Small3. 在余下的序列 S:-2進(jìn)行平分,得到序列 max, min4. 將 Small 加到 max 序列,將 Big 加大 min 序列,重新計(jì)算新序列和,和大的為max,小的為 min 。Python 代碼def mean( sorted_list ):if not sorted_list:return (,)big = sorted_list-1small = sorted_list-2big_l
18、ist, small_list =mean(sorted_list:-2)big_list.append(small)small_list.append(big)精品文檔學(xué)習(xí)資料big_list_sum =sum(big_list)small_list_sum =sum(small_list)if big_list_sum >small_list_sum:return ( (big_list,small_list)else:return ( small_list,big_list)tests = 1,2,3,4,5,6,700,800,10001,10000,100,90,50,1,ra
19、nge(1, 11),12312, 12311, 232, 210,30, 29, 3, 2, 1, 1for l in tests:l.sort()printprint“ Source List:” ,ll1,l2 = mean(l)print“ Result List:” ,l1, l2print“ Distance:” ,abs(sum(l1)-sum(l2)print-* *40輸出結(jié)果Python 代碼Source List:1, 2, 3, 4, 5, 6, 700, 800精品文檔學(xué)習(xí)資料Result List:1, 4, 5, 800 2, 3, 6, 700Distance:
20、99-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*Source List:1, 50, 90, 100, 10000, 10001Result List:50, 90, 10000 1, 100, 10001Distance:38-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*Source List:1, 2, 3, 4, 5, 6, 7, 8, 9, 10Result
21、List:2, 3, 6, 7, 10 1, 4, 5, 8, 9Distance:1-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*Source List:1, 1, 2, 3, 29, 30, 210, 232, 12311, 12312Result List:1, 3, 29, 232, 12311 1, 2, 30, 210, 12312Distance:2120. python 程序中文輸出問題怎么解決?方法一:用 encode 和 decode如:import os.pa
22、thimport xlrd,sysFilename= /home/tom/Desktop/1234.xlsif not os.path.isfile(Filename):raise NameError,” %s is not a valid filename” %Filenamebk=xlrd.open_workbook(Filename)shxrange=range(bk.nsheets)print shxrange精品文檔學(xué)習(xí)資料for x in shxrange:p=bk.sheets().encode( utf-8 )print p.decode( utf-8 )方法二:在
23、文件開頭加上reload(sys)sys.setdefaultencoding( utf8 )這 2 行,再試著運(yùn)行一下字符串在Python 內(nèi)部的表示是unicode 編碼,因此,在做編碼轉(zhuǎn)換時(shí),通常需要以unicode作為中間編碼,即先將其他編碼的字符串解碼(decode)成unicode ,再從unicode 編碼(encode )成另一種編碼。decode 的作用是將其他編碼的字符串轉(zhuǎn)換成unicode 編碼,如str1.decode('gb2312') ,表示將 gb2312 編碼的字符串 str1 轉(zhuǎn)換成 unicode 編碼。encode 的作用是將unicode
24、 編碼轉(zhuǎn)換成其他編碼的字符串,如str2.encode('gb2312') ,表示將 unicode 編碼的字符串 str2 轉(zhuǎn)換成 gb2312 編碼。因此,轉(zhuǎn)碼的時(shí)候一定要先搞明白,字符串str 是什么編碼,然后decode 成 unicode ,然后再 encode 成其他編碼代碼中字符串的默認(rèn)編碼與代碼文件本身的編碼一致。如: s='中文 '如果是在utf8 的文件中,該字符串就是utf8 編碼,如果是在gb2312 的文件中,則其編碼為gb2312。這種情況下,要進(jìn)行編碼轉(zhuǎn)換,都需要先用 decode 方法將其轉(zhuǎn)換成 unicode 編碼,再使用 en
25、code 方法將其轉(zhuǎn)換成其他編碼。通常,在沒有指定特定的編碼方式時(shí),都是使用的系統(tǒng)默認(rèn)編碼創(chuàng)建的代碼文件。如果字符串是這樣定義:s=u'中文 '則該字符串的編碼就被指定為unicode 了,即python 的內(nèi)部編碼,而與代碼文件本身的編碼無關(guān)。因此,對于這種情況做編碼轉(zhuǎn)換,只需要直接使用encode 方法將其轉(zhuǎn)換成指定編碼即可。如果一個(gè)字符串已經(jīng)是 unicode 了,再進(jìn)行解碼則將出錯(cuò),因此通常要對其編碼方式是否為 unicode 進(jìn)行判斷:isinstance(s,unicode)#用來判斷是否為unicode用非 unicode 編碼形式的str 來 encode 會(huì)報(bào)
26、錯(cuò)精品文檔學(xué)習(xí)資料如何獲得系統(tǒng)的默認(rèn)編碼?#!/usr/bin/env python#coding=utf-8import sysprint sys.getdefaultencoding()該段程序在英文WindowsXP 上輸出為: ascii21. python 代碼得到列表 list 的交集與差集交集b1=1,2,3b2=2,3,4b3 = val for val in b1if val in b2print b3差集b1=1,2,3b2=2,3,4b3 = val for val in b1 if val not in b2print b3差集實(shí)例 - #/bin/env python
27、# -*- coding:utf-8 -*-f =open( C:excel.txt)excel = f.readlines()f.close()f= open( C:db.txt)db = f.readlines()diff = val for val in db if val not in excelf.close()f =open( C:diff.txt , w)精品文檔學(xué)習(xí)資料f.writelines(diff)f.close()print diff22. 寫一個(gè)簡單的 python socket 編程python編寫 server 的步驟:1 第一步是創(chuàng)建socket 對象。調(diào)用so
28、cket 構(gòu)造函數(shù)。如:socket = socket.socket(family, type )family 參數(shù)代表地址家族, 可為 AF_INET或 AF_UNIX。AF_INET家族包括 Internet 地址,AF_UNIX家族用于同一臺機(jī)器上的進(jìn)程間通信。type 參數(shù)代表套接字類型,可為SOCK_STREAM(流套接字 )和 SOCK_DGRAM(數(shù)據(jù)報(bào)套接字)。2.第二步是將socket 綁定到指定地址。這是通過socket 對象的 bind 方法來實(shí)現(xiàn)的:socket.bind( address )由 AF_INET所創(chuàng)建的套接字, address 地址必須是一個(gè)雙元素元組,
29、格式是 (host,port) 。 host 代表主機(jī), port 代表端口號。如果端口號正在使用、主機(jī)名不正確或端口已被保留, bind 方法將引發(fā) socket.error 異常。3.第三步是使用socket 套接字的 listen 方法接收連接請求。socket.listen( backlog )backlog 指定最多允許多少個(gè)客戶連接到服務(wù)器。它的值至少為1。收到連接請求后,這些請求需要排隊(duì),如果隊(duì)列滿,就拒絕請求。4.第四步是服務(wù)器套接字通過socket 的 accept 方法等待客戶請求一個(gè)連接。connection, address =socket.accept()調(diào)用 acc
30、ept 方法時(shí), socket 會(huì)時(shí)入“ waiting ”狀態(tài)??蛻粽埱筮B接時(shí),方法建立連接并返回服務(wù)器。accept 方法返回一個(gè)含有兩個(gè)元素的元組(connection,address) 。第一個(gè)元素connection 是新的 socket 對象,服務(wù)器必須通過它與客戶通信;第二個(gè)元素address 是客戶的 Internet 地址。5. 第五步是處理階段,服務(wù)器和客戶端通過send 和 recv 方法通信 (傳輸數(shù)據(jù) )。服務(wù)器調(diào)用send,并采用字符串形式向客戶發(fā)送信息。 send 方法返回已發(fā)送的字符個(gè)數(shù)。服務(wù)器使用 recv 方法從客戶接收信息。調(diào)用 recv 時(shí),服務(wù)器必須指
31、定一個(gè)整數(shù),它對應(yīng)于可通過本次精品文檔學(xué)習(xí)資料方法調(diào)用來接收的最大數(shù)據(jù)量。recv 方法在接收數(shù)據(jù)時(shí)會(huì)進(jìn)入“blocked”狀態(tài),最后返回一個(gè)字符串,用它表示收到的數(shù)據(jù)。如果發(fā)送的數(shù)據(jù)量超過了recv 所允許的,數(shù)據(jù)會(huì)被截短。多余的數(shù)據(jù)將緩沖于接收端。以后調(diào)用recv 時(shí),多余的數(shù)據(jù)會(huì)從緩沖區(qū)刪除(以及自上次調(diào)用 recv 以來,客戶可能發(fā)送的其它任何數(shù)據(jù))。6. 傳輸結(jié)束,服務(wù)器調(diào)用 socket 的 close 方法關(guān)閉連接。python 編寫 client 的步驟:1. 創(chuàng)建一個(gè) socket 以連接服務(wù)器:socket= socket.socket( family, type )2.使
32、用 socket 的 connect 方法連接服務(wù)器。對于AF_INET家族 ,連接格式如下:socket.connect(host,port) )host 代表服務(wù)器主機(jī)名或IP,port 代表服務(wù)器進(jìn)程所綁定的端口號。如連接成功, 客戶就可通過套接字與服務(wù)器通信,如果連接失敗,會(huì)引發(fā)socket.error 異常。3. 處理階段,客戶和服務(wù)器將通過send 方法和 recv 方法通信。4. 傳輸結(jié)束,客戶通過調(diào)用 socket 的 close 方法關(guān)閉連接。下面給個(gè)簡單的例子:server.pyif _name_ ='_main_':import socketsock =
33、socket.socket(socket.AF_INET,socket.SOCK_STREAM)sock.bind('localhost',8001)sock.listen(5)while True:connection,address =sock.accept()精品文檔學(xué)習(xí)資料try:connection.settimeout(5)buf =connection.recv(1024)if buf = '1':connection.send('welcometo server!')else:connection.send('please
34、go out!')except socket.timeout:print 'time out'connection.close()client.pypython代碼if _name_ ='_main_':import socketsock =socket.socket(socket.AF_INET, socket.SOCK_STREAM)sock.connect('localhost',8001)import timetime.sleep(2)sock.send('1')print sock.recv(1024)sock.
35、close()精品文檔學(xué)習(xí)資料在終端運(yùn)行 server.py,然后運(yùn)行 clien.py ,會(huì)在終端打印“ welcometo server!" 。如果更改 client.py 的 sock.23. Python 文件操作的面試題1. 如何用 Python 刪除一個(gè)文件?使用 os.remove(filename) 或者 os.unlink(filename);2. Python 如何 copy 一個(gè)文件?shutil 模塊有一個(gè)copyfile 函數(shù)可以實(shí)現(xiàn)文件拷貝1:Python 如何實(shí)現(xiàn)單例模式?Python 有兩種方式可以實(shí)現(xiàn)單例模式,下面兩個(gè)例子使用了不同的方式實(shí)現(xiàn)單例模式
36、:1.class Singleton(type):def _init_(cls, name, bases, dict):super(Singleton, cls)._init_(name, bases, dict)cls.instance = Nonedef _call_(cls, *args, *kw):if cls.instance is None:cls.instance = super(Singleton, cls)._call_(*args, *kw)return cls.instanceclass MyClass(object):_metaclass_ = Singletonpri
37、nt MyClass()print MyClass()2. 使用 decorator 來實(shí)現(xiàn)單例模式def singleton(cls):instances = def getinstance():if cls not in instances:instancescls = cls()return instancesclsreturn getinstancesingletonclass MyClass:精品文檔學(xué)習(xí)資料2:什么是lambda 函數(shù)?Python 允許你定義一種單行的小函數(shù)。定義 lambda 函數(shù)的形式如下:labmda 參數(shù):表達(dá)式lambda 函數(shù)默認(rèn)返回表達(dá)式的值。你也可
38、以將其賦值給一個(gè)變量。lambda 函數(shù)可以接受任意個(gè)參數(shù),包括可選參數(shù),但是表達(dá)式只有一個(gè):>>> g = lambda x, y: x*y>>> g(3,4)12>>> g = lambda x, y=0, z=0: x+y+z>>> g(1)1>>> g(3, 4, 7)14也能夠直接使用lambda 函數(shù),不把它賦值給變量:>>> (lambda x,y=0,z=0:x+y+z)(3,5,6)14如果你的函數(shù)非常簡單,只有一個(gè)表達(dá)式,不包含命令,可以考慮lambda 函數(shù)。否則,
39、你還是定義函數(shù)才對,畢竟函數(shù)沒有這么多限制。3:Python 是如何進(jìn)行類型轉(zhuǎn)換的?Python 提供了將變量或值從一種類型轉(zhuǎn)換成另一種類型的內(nèi)置函數(shù)。int 函數(shù)能夠?qū)⒎蠑?shù)學(xué)格式數(shù)字型字符串轉(zhuǎn)換成整數(shù)。否則,返回錯(cuò)誤信息。>>> int(” 34 )34>>> int(” 1234ab” ) #不能轉(zhuǎn)換成整數(shù)ValueError: invalid literal for int(): 1234ab函數(shù) int 也能夠把浮點(diǎn)數(shù)轉(zhuǎn)換成整數(shù),但浮點(diǎn)數(shù)的小數(shù)部分被截去。>>> int(34.1234)34>>> int(-2.
40、46)-2函數(shù)° oat 將整數(shù)和字符串轉(zhuǎn)換成浮點(diǎn)數(shù):>>> float( ” 12)12.0>>> float( ” 1.111111) 1.111111函數(shù) str 將數(shù)字轉(zhuǎn)換成字符:>>> str(98)98>>> str(” 76.765 )76.765 精品文檔學(xué)習(xí)資料整數(shù) 1 和浮點(diǎn)數(shù)1.0 在 python 中是不同的。雖然它們的值相等的,但卻屬于不同的類型。這兩個(gè)數(shù)在計(jì)算機(jī)的存儲(chǔ)形式也是不一樣。4:Python 如何定義一個(gè)函數(shù)函數(shù)的定義形式如下:def <name>(arg1, ar
41、g2,argN):<statements>函數(shù)的名字也必須以字母開頭,可以包括下劃線“” ,但不能把 Python 的關(guān)鍵字定義成函數(shù)的名字。函數(shù)內(nèi)的語句數(shù)量是任意的,每個(gè)語句至少有一個(gè)空格的縮進(jìn),以表示此語句屬于這個(gè)函數(shù)的。縮進(jìn)結(jié)束的地方,函數(shù)自然結(jié)束。下面定義了一個(gè)兩個(gè)數(shù)相加的函數(shù):>>> def add(p1, p2):print p1,“ +” , p2,“ =” , p1+p2>>> add(1, 2)1+2=3函數(shù)的目的是把一些復(fù)雜的操作隱藏,來簡化程序的結(jié)構(gòu),使其容易閱讀。函數(shù)在調(diào)用前,必須先定義。也可以在一個(gè)函數(shù)內(nèi)部定義函數(shù),內(nèi)部
42、函數(shù)只有在外部函數(shù)調(diào)用時(shí)才能夠被執(zhí)行。程序調(diào)用函數(shù)時(shí),轉(zhuǎn)到函數(shù)內(nèi)部執(zhí)行函數(shù)內(nèi)部的語句,函數(shù)執(zhí)行完畢后,返回到它離開程序的地方,執(zhí)行程序的下一條語句。5:Python 是如何進(jìn)行內(nèi)存管理的?Python 的內(nèi)存管理是由 Python 得解釋器負(fù)責(zé)的, 開發(fā)人員可以從內(nèi)存管理事務(wù)中解放出來,致力于應(yīng)用程序的開發(fā),這樣就使得開發(fā)的程序錯(cuò)誤更少,程序更健壯,開發(fā)周期更短6:如何反序的迭代一個(gè)序列?howdo I iterate over a sequence in reverse order如果是一個(gè)list,最快的解決方案是:list.reverse()try:for x in list:“do s
43、omething with x ”finally:list.reverse()如果不是list, 最通用但是稍慢的解決方案是:精品文檔學(xué)習(xí)資料for i in range(len(sequence)-1, -1, -1):x = sequencei<do something with x>7:Python 里面如何實(shí)現(xiàn)tuple 和 list 的轉(zhuǎn)換?函數(shù) tuple(seq) 可以把所有可迭代的(iterable) 序列轉(zhuǎn)換成一個(gè)tuple, 元素不變, 排序也不變。例如, tuple(1,2,3) 返回 (1,2,3),tuple( abc)返回 (a.b', c
44、9;).如果參數(shù)已經(jīng)是一個(gè)tuple的話,函數(shù)不做任何拷貝而直接返回原來的對象,所以在不確定對象是不是tuple 的時(shí)候來調(diào)用 tuple() 函數(shù)也不是很耗費(fèi)的。函數(shù) list(seq)可以把所有的序列和可迭代的對象轉(zhuǎn)換成一個(gè)list,元素不變,排序也不變。例如 list(1,2,3) 返回 (1,2,3),list( abc )返回 'a', 'b', 'c' 。如果參數(shù)是一個(gè) list,她會(huì)像 set: 一樣做一個(gè)拷貝8:Python 面試題:請寫出一段Python 代碼實(shí)現(xiàn)刪除一個(gè)list 里面的重復(fù)元素可以先把list 重新排序,然后從
45、list 的最后開始掃描,代碼如下:if List:List.sort()last = List-1for i in range(len(List)-2, -1, -1):if last=Listi: del Listielse: last=Listi9:Python 文件操作的面試題1. 如何用 Python 刪除一個(gè)文件?使用 os.remove(filename) 或者 os.unlink(filename);2. Python 如何 copy 一個(gè)文件?shutil 模塊有一個(gè)copyfile 函數(shù)可以實(shí)現(xiàn)文件拷貝10: Python 里面如何生成隨機(jī)數(shù)?標(biāo)準(zhǔn)庫 random 實(shí)現(xiàn)了一
46、個(gè)隨機(jī)數(shù)生成器,實(shí)例代碼如下:import randomrandom.random()精品文檔學(xué)習(xí)資料它會(huì)返回一個(gè)隨機(jī)的0 和 1 之間的浮點(diǎn)數(shù)11:如何用Python 來發(fā)送郵件?可以使用smtplib 標(biāo)準(zhǔn)庫。以下代碼可以在支持SMTP 監(jiān)聽器的服務(wù)器上執(zhí)行。import sys, smtplibfromaddr = raw_input(” From:“)toaddrs = raw_input(” To:“ ).split( ,')print“ Enter message, end with D:”msg =”while 1:line = sys.stdin.readline()i
47、f not line:breakmsg = msg + line# 發(fā)送郵件部分server = smtplib.SMTP( localhost)server.sendmail(fromaddr, toaddrs, msg)server.quit()12: Python 里面如何拷貝一個(gè)對象?一般來說可以使用copy.copy()方法或者copy.deepcopy() 方法,幾乎所有的對象都可以被拷貝一些對象可以更容易的拷貝,Dictionaries 有一個(gè) copy 方法:newdict = olddict.copy()13:有沒有一個(gè)工具可以幫助查找python 的 bug 和進(jìn)行靜態(tài)的代碼分析?有,PyChecker 是一個(gè) python 代碼的靜態(tài)分析工具, 它可以幫助查找 python 代碼的 bug, 會(huì)對代碼的復(fù)雜度和格式提出警告Pylint 是另外一個(gè)工具可以進(jìn)行coding standard 檢查。14:如何在一個(gè)function 里面設(shè)置一個(gè)全局的變量?解決方法是在function 的開始插入一個(gè)global 聲明:精品文檔學(xué)習(xí)資料def f()global x14:有兩個(gè)序列a,b,大小都為n,序列元素的值任意整形數(shù),無序;要求:通過交換a,b 中的元素,使 序列 a 元素的和
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度酒店水暖系統(tǒng)設(shè)計(jì)與安裝合同2篇
- 二零二五年度高校畢業(yè)生就業(yè)實(shí)習(xí)全面合作協(xié)議3篇
- 二零二五年鋼結(jié)構(gòu)工程材料居間供應(yīng)協(xié)議2篇
- 二零二五年度節(jié)能減排環(huán)保技術(shù)轉(zhuǎn)移與轉(zhuǎn)化合同2篇
- 二零二五年度高速公路監(jiān)控設(shè)備更新合同3篇
- 二零二五年度裝修工程安全責(zé)任及環(huán)保驗(yàn)收合同3篇
- 二零二五年智能家居設(shè)備OEM生產(chǎn)與技術(shù)支持協(xié)議3篇
- 二零二五年度施工現(xiàn)場安全防護(hù)責(zé)任施工合同匯編3篇
- 【逆襲寒假】第9天拓展篇寫人類閱讀-統(tǒng)編版五年級語文逆襲寒假練習(xí)本(含答案)
- 二零二五年度夫妻離婚后子女撫養(yǎng)權(quán)變更協(xié)議書3篇
- 輻射安全知識培訓(xùn)課件
- 2023-2024學(xué)年八年級(上)期末數(shù)學(xué)試卷
- 落實(shí)《中小學(xué)德育工作指南》制定的實(shí)施方案(pdf版)
- 光伏項(xiàng)目施工總進(jìn)度計(jì)劃表(含三級)
- 氣候變化與林業(yè)碳匯智慧樹知到期末考試答案2024年
- 挪用公款還款協(xié)議書范本
- 建設(shè)工程施工合同 GF—2017—0201
- 汽車吊吊裝計(jì)算
- 河南省集中供熱定價(jià)成本監(jiān)審辦法
- 墜床跌倒處理流程圖
- CSFB業(yè)務(wù)流程中(MME和CSFBMSC)尋呼參數(shù)設(shè)置研究
評論
0/150
提交評論