摘要:和的的區(qū)別和的的區(qū)別返回列表,返回迭代器,節(jié)約內(nèi)存當(dāng)后面沒(méi)有元素可以的時(shí)候,彈出錯(cuò)誤等是可迭代的但不是迭代器,因?yàn)楹瘮?shù)無(wú)法調(diào)用它們。等是可迭代的但不是迭代器,因?yàn)楹瘮?shù)無(wú)法調(diào)用它們。
1、一行代碼實(shí)現(xiàn)1–100之和
# 1、一行代碼實(shí)現(xiàn)1--100之和sum(range(1,101))
2、如何在一個(gè)函數(shù)內(nèi)部修改全局變量
# 2、如何在一個(gè)函數(shù)內(nèi)部修改全局變量# 利用global在函數(shù)聲明 修改全局變量a = 6def cos(): global a a =4 cos()print(a)
3、列出5個(gè)python標(biāo)準(zhǔn)庫(kù)
os:提供了不少與操作系統(tǒng)相關(guān)聯(lián)的函數(shù)
sys: 通常用于命令行參數(shù)
re: 正則匹配
math: 數(shù)學(xué)運(yùn)算
datetime:處理日期時(shí)間
4、字典如何刪除鍵和合并兩個(gè)字典
# 4、字典如何刪除鍵和合并兩個(gè)字典# del和update方法dic = {"n":"da","g":"asd","f":"ae"}dic2 = {"b":"sdf","k":"aef","l":"thn"}del dic["n"]dic.update(dic2)dic
5、談下python的GIL
GIL 是python的全局解釋器鎖,同一進(jìn)程中假如有多個(gè)線程運(yùn)行,一個(gè)線程在運(yùn)行python程序的時(shí)候會(huì)霸占python解釋器(加了一把鎖即GIL),使該進(jìn)程內(nèi)的其他線程無(wú)法運(yùn)行,等該線程運(yùn)行完后其他線程才能運(yùn)行。如果線程運(yùn)行過(guò)程中遇到耗時(shí)操作,則解釋器鎖解開(kāi),使其他線程運(yùn)行。所以在多線程中,線程的運(yùn)行仍是有先后順序的,并不是同時(shí)進(jìn)行。
多進(jìn)程中因?yàn)槊總€(gè)進(jìn)程都能被系統(tǒng)分配資源,相當(dāng)于每個(gè)進(jìn)程有了一個(gè)python解釋器,所以多進(jìn)程可以實(shí)現(xiàn)多個(gè)進(jìn)程的同時(shí)運(yùn)行,缺點(diǎn)是進(jìn)程系統(tǒng)資源開(kāi)銷(xiāo)大
6、python實(shí)現(xiàn)列表去重的方法
# 6、python實(shí)現(xiàn)列表去重的方法# 先通過(guò)集合去重,在轉(zhuǎn)列表list = [12,43,7,89,234,667,56,67,67,34,43]a = set(list)a # {7, 12, 34, 43, 56, 67, 89, 234, 667}list = [i for i in a]list
7、fun(args,**kwargs)中的args,**kwargs什么意思?
# 7、fun(*args,**kwargs)中的*args,**kwargs什么意思?# *args和**kwargs主要用于函數(shù)定義。你可以將不定數(shù)量的參數(shù)傳遞給一個(gè)函數(shù)。# 這里的不定的意思是:預(yù)先并不知道,函數(shù)使用者會(huì)傳遞多少個(gè)參數(shù)給你所以在這個(gè)場(chǎng)景下使用這兩個(gè)關(guān)鍵字。# *args是用來(lái)發(fā)送一個(gè)非鍵值對(duì)的可變數(shù)量的參數(shù)列表給一個(gè)函數(shù).def d(args_a,*args_b): print(args_a) for i in args_b: print(i) d("a","b","y","y","k")
# **kwargs允許你將不定長(zhǎng)度的鍵值對(duì),作為參數(shù)傳遞給一個(gè)函數(shù)。# 如果你想要在一個(gè)函數(shù)里處理帶名字的參數(shù),你應(yīng)該使用**kwargs。def f(**args): for i,j in args.items(): print(i,j)f(a = "bab")
8、python2和python3的range(100)的區(qū)別
# 8、python2和python3的range(100)的區(qū)別# python2返回列表,python3返回迭代器,節(jié)約內(nèi)存# 當(dāng)后面沒(méi)有元素可以next的時(shí)候,彈出錯(cuò)誤list = [1,2,45,5,64]it = iter(list)next(it) # 1next(it) # 2next(it) # 45next(it) # 5next(it) # 64# next(it) # StopIteration Traceback (most recent call last)# list、dict、str等是可迭代的但不是迭代器,因?yàn)?span id="qoyqs8suu2u" class="token function">next()函數(shù)無(wú)法調(diào)用它們??梢酝ㄟ^(guò)iter()函數(shù)將它們轉(zhuǎn)換成迭代器。
list、dict、str等是可迭代的但不是迭代器,因?yàn)閚ext()函數(shù)無(wú)法調(diào)用它們??梢酝ㄟ^(guò)iter()函數(shù)將它們轉(zhuǎn)換成迭代器。
9、一句話解釋什么樣的語(yǔ)言能夠用裝飾器?
函數(shù)可以作為參數(shù)傳遞的語(yǔ)言,可以使用裝飾器
10、python內(nèi)建數(shù)據(jù)類(lèi)型有哪些
整型–int
布爾型–bool
字符串–str
列表–list
元組–tuple
字典–dict
11、簡(jiǎn)述面向?qū)ο笾衉_new__和__init__區(qū)別
# 11、簡(jiǎn)述面向?qū)ο笾衉_new__和__init__區(qū)別# __init__是初始化方法,創(chuàng)建對(duì)象后,就立刻被默認(rèn)調(diào)用了,可接收參數(shù)class Man(object): def __init__(self,eyes,legs): self.eyes = eyes self.legs = legs def run(self): print("人會(huì)跑") m = Man(2,2)print("人的眼睛數(shù)量:%d"%m.eyes)print("人的腿數(shù)量:%d"%m.legs)
1、__new__至少要有一個(gè)參數(shù)cls,代表當(dāng)前類(lèi),此參數(shù)在實(shí)例化時(shí)由Python解釋器自動(dòng)識(shí)別2、__new__必須要有返回值,返回實(shí)例化出來(lái)的實(shí)例,這點(diǎn)在自己實(shí)現(xiàn)__new__時(shí)要特別注意,可以return父類(lèi)(通過(guò)super(當(dāng)前類(lèi)名, cls))__new__出來(lái)的實(shí)例,或者直接是object的__new__出來(lái)的實(shí)例3、__init__有一個(gè)參數(shù)self,就是這個(gè)__new__返回的實(shí)例,__init__在__new__的基礎(chǔ)上可以完成一些其它初始化的動(dòng)作,__init__不需要返回值4、如果__new__創(chuàng)建的是當(dāng)前類(lèi)的實(shí)例,會(huì)自動(dòng)調(diào)用__init__函數(shù),通過(guò)return語(yǔ)句里面調(diào)用的__new__函數(shù)的第一個(gè)參數(shù)是cls來(lái)保證是當(dāng)前類(lèi)實(shí)例,如果是其他類(lèi)的類(lèi)名,;那么實(shí)際創(chuàng)建返回的就是其他類(lèi)的實(shí)例,其實(shí)就不會(huì)調(diào)用當(dāng)前類(lèi)的__init__函數(shù),也不會(huì)調(diào)用其他類(lèi)的__init__函數(shù)。
class A(object): def __init__(self): print("init方法",self) def __new__(cls): print("cls的ID",id(cls)) print("new方法",object.__new__(cls)) return object.__new__(cls) A()print("類(lèi)A的ID",id(A))# cls的ID 1831505335528 # cls和類(lèi)ID一樣,說(shuō)明指向同一個(gè)類(lèi),也就是說(shuō)cls就是創(chuàng)建的實(shí)例類(lèi)# new方法 <__main__.A object at 0x000001AA6FE97988> # self和new方法返回地址一樣,說(shuō)明返回值是對(duì)象# init方法 <__main__.A object at 0x000001AA6FE97988># 類(lèi)A的ID 1831505335528
12、簡(jiǎn)述with方法打開(kāi)處理文件幫我我們做了什么?
# 12、簡(jiǎn)述with方法打開(kāi)處理文件幫我我們做了什么?f = open("./1.txt","wb")try: f.write("hello world")except: passfinally: f.close() # 打開(kāi)文件在進(jìn)行讀寫(xiě)的時(shí)候可能會(huì)出現(xiàn)一些異常狀況,如果按照常規(guī)的f.open# 寫(xiě)法,我們需要try,except,finally,做異常判斷,并且文件最終不管遇到什么情況,都要執(zhí)行finally f.close()關(guān)閉文件,with方法幫我們實(shí)現(xiàn)了finally中f.close# (當(dāng)然還有其他自定義功能,有興趣可以研究with方法源碼)
13、列表[1,2,3,4,5],請(qǐng)使用map()函數(shù)輸出[1,4,9,16,25],并使用列表推導(dǎo)式提取出大于10的數(shù),最終輸出[16,25]
# 13、列表[1,2,3,4,5],請(qǐng)使用map()函數(shù)輸出[1,4,9,16,25],并使用列表推導(dǎo)式提取出大于10的數(shù),最終輸出[16,25]# map()函數(shù)第一個(gè)參數(shù)是fun,第二個(gè)參數(shù)是一般是list,第三個(gè)參數(shù)可以寫(xiě)list,也可以不寫(xiě),根據(jù)需求li = [1,2,3,4,5]def f(x): return x**2re = map(f,li)re # <map at 0x1aa6fe9e648>r = [i for i in re if i > 10]r
14、python中生成隨機(jī)整數(shù)、隨機(jī)小數(shù)、0–1之間小數(shù)方法
# 14、python中生成隨機(jī)整數(shù)、隨機(jī)小數(shù)、0--1之間小數(shù)方法# 隨機(jī)整數(shù):random.randint(a,b),生成區(qū)間內(nèi)的整數(shù)# 隨機(jī)小數(shù):習(xí)慣用numpy庫(kù),利用np.random.randn(5)生成5個(gè)隨機(jī)小數(shù)# 0-1隨機(jī)小數(shù):random.random(),括號(hào)中不傳參import randomimport numpy as npr1 = random.randint(1,130)r2 = np.random.randn(5)r3 = random.random()print("整數(shù)",r1)print("隨機(jī)小數(shù)",r2)print("0-1之間小數(shù)",r3)
15、避免轉(zhuǎn)義給字符串加哪個(gè)字母表示原始字符串?
r , 表示需要原始字符串,不轉(zhuǎn)義特殊字符
16、
# 16、<div class="nam">中國(guó)</div>,用正則匹配出標(biāo)簽里面的內(nèi)容(“中國(guó)”),其中class的類(lèi)名是不確定的import restr = "中國(guó)"res = re.findall(r"(.*?)",str)print(res)
17、python中斷言方法舉例
# 17、python中斷言方法舉例# assert()方法,斷言成功,則程序繼續(xù)執(zhí)行,斷言失敗,則程序報(bào)錯(cuò)a = 4assert(a>1),"斷言失敗"print("斷言成功,繼續(xù)執(zhí)行")# 斷言成功,繼續(xù)執(zhí)行b = 6assert(b>10),"斷言失敗"print("失敗了")# AssertionError: 斷言失敗
18、數(shù)據(jù)表student有id,name,score,city字段,其中name中的名字可有重復(fù),需要消除重復(fù)行,請(qǐng)寫(xiě)sql語(yǔ)句
# 18、數(shù)據(jù)表student有id,name,score,city字段,其中name中的名字可有重復(fù),需要消除重復(fù)行,請(qǐng)寫(xiě)sql語(yǔ)句# select distinct name from student
19、10個(gè)Linux常用命令
# 19、10個(gè)Linux常用命令# ls pwd cd touch rm mkdir tree cp mv cat more grep echo
20、python2和python3區(qū)別?列舉5個(gè)
21、列出python中可變數(shù)據(jù)類(lèi)型和不可變數(shù)據(jù)類(lèi)型,并簡(jiǎn)述原理
# 21、列出python中可變數(shù)據(jù)類(lèi)型和不可變數(shù)據(jù)類(lèi)型,并簡(jiǎn)述原理# 不可變數(shù)據(jù)類(lèi)型:數(shù)值型、字符串型string和元組tuple# 不允許變量的值發(fā)生變化,如果改變了變量的值,相當(dāng)于是新建了一個(gè)對(duì)象,而對(duì)于相同的值的對(duì)象,在內(nèi)存中則只有一個(gè)對(duì)象(一個(gè)地址),如下圖用id()方法可以打印對(duì)象的ida = 3b = 3 id(a) # 140721860017280id(b) # 140721860017280# 可變數(shù)據(jù)類(lèi)型:列表list和字典dict;# 允許變量的值發(fā)生變化,即如果對(duì)變量進(jìn)行append、+=等這種操作后,只是改變了變量的值,而不會(huì)新建一個(gè)對(duì)象,變量引用的對(duì)象的地址也不會(huì)變化,不過(guò)對(duì)于相同的值的不同對(duì)象,在內(nèi)存中則會(huì)存在不同的對(duì)象,即每個(gè)對(duì)象都有自己的地址,相當(dāng)于內(nèi)存中對(duì)于同值的對(duì)象保存了多份,這里不存在引用計(jì)數(shù),是實(shí)實(shí)在在的對(duì)象。c = [1,3]d = [1,3]id(c) # 1831536943816id(d) # 1831532397448
22、s = “ajldjlajfdljfffffd”,去重并從小到大排序輸出"adfjl"
# 22、s = "ajldjlajfdljfffffd",去重并從小到大排序輸出"adfjl"# set去重,去重轉(zhuǎn)成list,利用sort方法排序,reverse=False是從小到大排# list是不 變數(shù)據(jù)類(lèi)型,s.sort時(shí)候沒(méi)有返回值,所以注釋的代碼寫(xiě)法不正確aa = "ajldjlajfdljfffffd"bb = set(aa)bbcc = list(bb)cc
23、用lambda函數(shù)實(shí)現(xiàn)兩個(gè)數(shù)相乘
# 23、用lambda函數(shù)實(shí)現(xiàn)兩個(gè)數(shù)相乘sum = lambda x,y:x*yprint(sum(5,6))
24、字典根據(jù)鍵從小到大排序
# 24、字典根據(jù)鍵從小到大排序dic={"name":"zs","age":18,"city":"深圳","tel":"1362626627"}# lis = sorted(dic) # ["age", "city", "name", "tel"]lis = sorted(dic.items(),key=lambda i:i[0],reverse=False)lis# 字典化dict(lis)
25、利用collections庫(kù)的Counter方法統(tǒng)計(jì)字符串每個(gè)單詞出現(xiàn)的次數(shù)"kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h"
# 25、利用collections庫(kù)的Counter方法統(tǒng)計(jì)字符串每個(gè)單詞出現(xiàn)的次數(shù)"kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h"from collections import Countera = "kjalfj;ldsjafl;hdsllfdhg;lahfbl;hl;ahlf;h"res = Counter(a)print(res)
26、字符串a(chǎn) = “not 404 found 張三 99 深圳”,每個(gè)詞中間是空格,用正則過(guò)濾掉英文和數(shù)字,最終輸出"張三 深圳"
# 26、字符串a(chǎn) = "not 404 found 張三 99 深圳",每個(gè)詞中間是空格,用正則過(guò)濾掉英文和數(shù)字,最終輸出"張三 深圳"import rea = "not 404 found 張三 99 深圳"li = a.split(" ")print(li) # ["not", "404", "found", "張三", "99", "深圳"]res = re.findall("/d+|[a-zA-Z]+",a)print(res) # ["not", "404", "found", "99"]for i in res: if i in li: li.remove(i) print(li) # ["張三", "深圳"]new = " ".join(li)print(new) # 張三 深圳print("============================")# 貼上匹配小數(shù)的代碼,雖然能匹配,但是健壯性有待進(jìn)一步確認(rèn)res2 = re.findall("/d+/.?/d*|[a-zA-Z]+",a)print(res2) # ["not", "404", "found", "99"]for i in res2: if i in li: li.remove(i) new2 = " ".join(li)print(new2) # 張三 深圳
27、filter方法求出列表所有奇數(shù)并構(gòu)造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 27、filter方法求出列表所有奇數(shù)并構(gòu)造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]# filter() 函數(shù)用于過(guò)濾序列,過(guò)濾掉不符合條件的元素,# 返回由符合條件元素組成的新列表。# 該接收兩個(gè)參數(shù),第一個(gè)為函數(shù),第二個(gè)為序列,序列的每個(gè)元素作為參數(shù)傳遞給函數(shù)進(jìn)行判,# 然后返回 True 或 False,最后將返回 True 的元素放到新列表# 方法1def double(a): return a%2 == 1a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]list1 = filter(double,a)list1 # 返回地址 <filter at 0x1aa76b41648>new_list = [i for i in list1]new_list
28、列表推導(dǎo)式求列表所有奇數(shù)并構(gòu)造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 28、列表推導(dǎo)式求列表所有奇數(shù)并構(gòu)造新列表,a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]res = [i for i in a if i%2 ==1]res
29、正則re.complie作用
re.compile是將正則表達(dá)式編譯成一個(gè)對(duì)象,加快速度,并重復(fù)使用
30、a=(1,)b=(1),c=(“1”) 分別是什么類(lèi)型的數(shù)據(jù)?
# 30、a=(1,)b=(1),c=("1") 分別是什么類(lèi)型的數(shù)據(jù)?a=(1,0)b=(1)c=("1")print(type(a))print(type(b))print(type(c))
31、兩個(gè)列表[1,5,7,9]和[2,2,6,8]合并為[1,2,2,3,6,7,8,9]
# 31、兩個(gè)列表[1,5,7,9]和[2,2,6,8]合并為[1,2,2,3,6,7,8,9]# extend可以將另一個(gè)集合中的元素逐一添加到列表中,區(qū)別于append整體添加l1 = [1,5,7,9]l2 = [2,2,6,8]l1.extend(l2)l1.sort(reverse=False)l1
32、用python刪除文件和用linux命令刪除文件方法
python:os.remove(文件名)
linux: rm 文件名
33、log日志中,我們需要用時(shí)間戳記錄error,warning等的發(fā)生時(shí)間,請(qǐng)用datetime模塊打印當(dāng)前時(shí)間戳 “2018-04-01 11:38:54”
# 33、log日志中,我們需要用時(shí)間戳記錄error,warning等的發(fā)生時(shí)間,請(qǐng)用datetime模塊打印當(dāng)前時(shí)間戳 “2018-04-01 11:38:54”# 順便把星期的代碼也貼上了import datetime# now_time = datetime.datetime.now().strftime("%y-%m-%d %H:%M:%S")# day = datetime.datetime.now().isoweekday()# type(day) # int# now_timetotal = str(datetime.datetime.now().strftime("%y
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/123749.html
摘要:面試的心得體會(huì)簡(jiǎn)歷制作我做了兩份簡(jiǎn)歷,用兩個(gè)手機(jī)賬號(hào),兩個(gè)簡(jiǎn)歷名字,分別在各個(gè)招聘網(wǎng)站投了雙份簡(jiǎn)歷,一個(gè)是數(shù)據(jù)分析的簡(jiǎn)歷一個(gè)是全棧開(kāi)發(fā)的簡(jiǎn)歷,我真正接觸快年,不管是學(xué)習(xí)還是工作學(xué)到的東西,這兩年大概掌握了前端爬蟲(chóng)數(shù)據(jù)分析機(jī)器學(xué)習(xí)技術(shù), showImg(https://upload-images.jianshu.io/upload_images/13090773-b96aac7e974c...
摘要:接下來(lái)我們就來(lái)看看學(xué)到什么程度才算是真正學(xué)會(huì)可以去一展身手。一確立目標(biāo)了解需求做什么事情都要先確定好目標(biāo),才不至于迷失方向。 大家在學(xué)習(xí)Python的時(shí)候,有人會(huì)問(wèn)Python要學(xué)到什么程度才能出去找工作,對(duì)于在Python培訓(xùn)機(jī)構(gòu)學(xué)習(xí)Python的同學(xué)來(lái)說(shuō)這都不是問(wèn)題,因?yàn)榘凑誔ython課程大綱來(lái),一般都不會(huì)有什么問(wèn)題,而對(duì)于自學(xué)Python來(lái)說(shuō),那就比較難掌握,冒然出去找工作非常...
摘要:文末評(píng)論送書(shū),學(xué)委會(huì)用這個(gè)抽獎(jiǎng)程序來(lái)進(jìn)行嚴(yán)格抽獎(jiǎng),周六晚上點(diǎn)整定時(shí)抽獎(jiǎng)并視頻公布出來(lái),敬請(qǐng)期待。本文講的函數(shù)值傳遞問(wèn)題,是寫(xiě)程序經(jīng)常遇到,特別的是動(dòng)態(tài)參數(shù)在高級(jí)框架中使用很廣泛。 ...
摘要:要面試大廠,自己的知識(shí)儲(chǔ)備一定要非常豐富,若缺胳膊少腿,別說(shuō)在實(shí)際工作當(dāng)中,光是面試這一關(guān)就過(guò)不了。 金九銀十剛過(guò)去,有一部分朋友在這期間肯定經(jīng)歷了一番大廠面試的洗...
第1題: Python如何爬取 HTTPS 網(wǎng)站? 這類(lèi)問(wèn)題屬于簡(jiǎn)單類(lèi)問(wèn)題 在使用 requests 前加入:requests.packages.urllib3.disable_warnings()。 為 requests 添加 verify=False 參數(shù) 導(dǎo)入ssl模塊 import ssl ssl._create_default_https_context = ssl....
第1題: Python如何爬取 HTTPS 網(wǎng)站? 這類(lèi)問(wèn)題屬于簡(jiǎn)單類(lèi)問(wèn)題 在使用 requests 前加入:requests.packages.urllib3.disable_warnings()。 為 requests 添加 verify=False 參數(shù) 導(dǎo)入ssl模塊 import ssl ssl._create_default_https_context = ssl....
閱讀 2521·2021-11-18 10:02
閱讀 1996·2021-11-09 09:45
閱讀 2437·2021-09-26 09:47
閱讀 1034·2021-07-23 10:26
閱讀 1074·2019-08-30 15:47
閱讀 3367·2019-08-30 15:44
閱讀 983·2019-08-30 15:43
閱讀 889·2019-08-29 13:50