人妻系列无码专区av在线,国内精品久久久久久婷婷,久草视频在线播放,精品国产线拍大陆久久尤物

當(dāng)前位置:首頁(yè) > 軟件開發(fā) > 正文

lambda python用法菜鳥,pythonlambda多行

lambda python用法菜鳥,pythonlambda多行

大家好,lambda python用法菜鳥相信很多的網(wǎng)友都不是很明白,包括pythonlambda多行也是一樣,不過沒有關(guān)系,接下來就來為大家分享關(guān)于lambda py...

大家好,lambda python用法菜鳥相信很多的網(wǎng)友都不是很明白,包括pythonlambda多行也是一樣,不過沒有關(guān)系,接下來就來為大家分享關(guān)于lambda python用法菜鳥和pythonlambda多行的一些知識(shí)點(diǎn),大家可以關(guān)注收藏,免得下次來找不到哦,下面我們開始吧!

filter函數(shù)的用法注意事項(xiàng)

1.filter函數(shù)接收兩個(gè)參數(shù):待過濾序列和過濾函數(shù)。

2.過濾函數(shù)需要返回True或False。

3.過濾函數(shù)可以是內(nèi)置函數(shù)也可以是自定義函數(shù)。

4.如果過濾函數(shù)沒有指定,默認(rèn)是bool函數(shù)。

5.filter函數(shù)返回的是一個(gè)迭代器,可以使用list()函數(shù)將其轉(zhuǎn)換為列表。

6.filter函數(shù)不會(huì)修改原有的序列,只會(huì)返回符合條件的元素。

7.對(duì)于需要判斷的條件較為復(fù)雜的過濾函數(shù),可以考慮使用lambda表達(dá)式來簡(jiǎn)化代碼。

8.如果想以容器(List)的形式返回過濾后的結(jié)果請(qǐng)使用toList(),如果想以集合(Set)的形式返回,請(qǐng)使用toSet()。

能不能自學(xué)python,會(huì)不會(huì)太難

作為一名計(jì)算機(jī)專業(yè)的教育工作者,我來回答一下這個(gè)問題。

首先,對(duì)于已經(jīng)具備一定編程基礎(chǔ)的同學(xué)來說,學(xué)習(xí)Python的初期還是相對(duì)比較容易的,但是要想找到一份Python開發(fā)崗位,還需要做好三方面的準(zhǔn)備。

其一是要選擇一個(gè)主攻方向,這對(duì)于就業(yè)的影響是非常明顯的。Python語言是一門典型的全場(chǎng)景編程語言,在Web開發(fā)、大數(shù)據(jù)開發(fā)、人工智能開發(fā)、嵌入式開發(fā)等領(lǐng)域都有所應(yīng)用,所以要選擇一個(gè)自己的主攻領(lǐng)域,然后按照該領(lǐng)域的崗位需求來制定學(xué)習(xí)計(jì)劃。

其二是根據(jù)自身的知識(shí)基礎(chǔ)和能力特點(diǎn)來選擇一個(gè)崗位類型,目前采用Python的崗位類型可以分成三大類,分別是算法崗、研發(fā)崗和應(yīng)用開發(fā)崗,不同崗位對(duì)于知識(shí)結(jié)構(gòu)的要求有所不同。從近幾年的人才需求情況來看,開發(fā)崗的人才需求量相對(duì)大一些,而且對(duì)于開發(fā)人員的整體要求也并不算高。

其三是為自己構(gòu)建一個(gè)實(shí)踐和交流場(chǎng)景,學(xué)習(xí)編程語言一定要有場(chǎng)景的支持,否則很難深入學(xué)習(xí)。雖然目前Python語言的應(yīng)用場(chǎng)景非常多,但是人才招聘量卻并不算大,而且很多崗位都集中在大數(shù)據(jù)、人工智能領(lǐng)域,這些領(lǐng)域?qū)τ趶臉I(yè)者的要求往往也比較高,比如學(xué)歷等,所以如果想在Python技術(shù)領(lǐng)域走得更遠(yuǎn),可以重點(diǎn)考慮讀一下研究生。

從學(xué)習(xí)的順序上來說,初學(xué)者可以先按照Web開發(fā)路線來學(xué)習(xí),一方面Web開發(fā)的入門難度相對(duì)比較低,另一方面Web開發(fā)的參考資料也非常豐富,即使采用自學(xué)的方式,也會(huì)有一個(gè)較好的學(xué)習(xí)體驗(yàn)。在完成了Web入門之后,可以結(jié)合自身的實(shí)際情況,選擇一個(gè)主攻方向。

我從事互聯(lián)網(wǎng)行業(yè)多年,目前也在帶計(jì)算機(jī)專業(yè)的研究生,主要的研究方向集中在大數(shù)據(jù)和人工智能領(lǐng)域,我會(huì)陸續(xù)寫一些關(guān)于互聯(lián)網(wǎng)技術(shù)方面的文章,感興趣的朋友可以關(guān)注我,相信一定會(huì)有所收獲。

如果有互聯(lián)網(wǎng)、大數(shù)據(jù)、人工智能等方面的問題,或者是考研方面的問題,都可以私信我!

一行Python,你可以做什么

繼“你看過/寫過哪些有意思的代碼”后,小慕又收到關(guān)于Python的戰(zhàn)帖,這怎么能慫?快快接招吧!

發(fā)功之前友情提示:部分案例適用于Python3,在Windows下面可以用Python命令代替,具體請(qǐng)根據(jù)自己的修行選擇。

一、江湖純情版

1、愛心

先來個(gè)高贊愛心的中英文結(jié)合版:

print'\n'.join([''.join([(u'ILoveChina愛'[(x-y)%11]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3<=0else'')forxinrange(-30,30)])foryinrange(15,-15,-1)])

如果換成純漢字的版本,則可能會(huì)出現(xiàn)較明顯的變形,所以為保證妹子不理解成“變心”,建議使用中英文結(jié)合的方式。你get到了嗎?

2、美麗的螺旋

或許你覺得心型圖案太俗套,那么試試下面這個(gè)美麗的螺旋?在python編譯器中輸入下面的代碼,接下來讓我們來見證奇跡吧!

exec"""\nfromturtleimport*\nforiinrange(500):\nforward(i)\nleft(91)\n"""二、娛樂縱情版

1、猜數(shù)字

無聊的時(shí)候,猜猜數(shù)字也是很有樂趣的嘛。1~99范圍內(nèi)的整數(shù),如果猜對(duì)了會(huì)給你一個(gè)“Y”,如果猜高了會(huì)給出一個(gè)“H”;猜低了,你會(huì)得到一個(gè)“L”(Y、H、L可以根據(jù)你希望它給出的提示進(jìn)行更換),你有六次機(jī)會(huì)猜出正確的結(jié)果哦!

python3-c"importrandom;n=random.randint(1,99);[(lambdaa:print('Y'ifa==nelse'H'ifa>nelse'L'))(int(input()))foriinrange(6)]”

2、老虎機(jī)

猜數(shù)字不過癮?不如再來試試迷你老虎機(jī),用隨機(jī)的unicode字符打樣出來,完美模擬了老虎機(jī)的效果!

python3-c"importrandom;p=lambda:random.choice('7');[print('|'.join([p(),p(),p()]),end='\r')foriinrange(8**5)]”

3、一行代碼幫你選彩票號(hào)碼

當(dāng)然,還有更刺激的彩票搖號(hào),不過與其將命運(yùn)交給彩票站的投注機(jī)器,不如自己寫一行代碼,喏,彩票選號(hào)代碼了解一下:

python-c"fromrandomimportsample;print'Lottonumbers:%s'%sample(range(1,50),6)"

友情提示:彩票有風(fēng)險(xiǎn),出手須謹(jǐn)慎,至于這行代碼給出的結(jié)果是否能夠中獎(jiǎng),那就只能看你的運(yùn)氣啦!

三、學(xué)府深造版

1、一行代碼實(shí)現(xiàn)GUI用戶界面

python-c"fromTkinterimport*;root=Tk();w=Label(root,text='你好!慕課網(wǎng)!');w.pack();root.mainloop()”

一行代碼實(shí)現(xiàn)GUI用戶界面有木有!

2、一行代碼啟動(dòng)一個(gè)http服務(wù)器

一行代碼可以啟動(dòng)一個(gè)HTTP服務(wù)器,這一點(diǎn)真的非常好用,所以盡管有其他答主提到過,還是忍不住要再分享一下!

python3-mhttp.server8888

在本地,輸入網(wǎng)址localhost:8888即可訪問,默認(rèn)會(huì)列出你的本地目錄:

3、Python的哲學(xué)

每次讀到Python之禪的時(shí)候,總是情不自禁地陷入優(yōu)美的意境不能自拔,恨不能隨時(shí)隨地都能拿來拜讀?下面這行代碼能夠滿足你的愿望:

python-c"importthis"

回車!然后,你便會(huì)發(fā)現(xiàn)你的屏幕上已然出現(xiàn)了心心念念的Python的ZEN(禪意)。神不神奇?驚不驚喜?

4、簡(jiǎn)易計(jì)算器

print(eval(input()))

這個(gè)單行代碼只用了默認(rèn)引入的函數(shù),其意義也是單純而透明:讀入一個(gè)python表達(dá)式并求值,將其結(jié)果輸出到屏幕,當(dāng)個(gè)簡(jiǎn)單計(jì)算器綽綽有余。

5、今天距離明年元旦還有多少天?

不會(huì)跟妹子搭訕?教你一招搭訕大法:故作神秘地問她知不知道還有多少天就是明年的元旦了,趁妹子一臉懵掉你打開編譯器,瀟灑地敲出以下這行代碼,然后看著結(jié)果告訴她:你看,距離明年元旦還有XX天!

python-c"""importdatetime;today=datetime.date.today();someday=datetime.date(2019,1,1);diff=someday-today;printstr(diff.days)+'days'“""

妹子接下來可能會(huì)有一波感嘆:哎呀,還有XX天了?日子過得真快啊!

然后你轉(zhuǎn)手將代碼一改,把元旦的時(shí)間改為你和妹子認(rèn)識(shí)的時(shí)間,然后跟妹子說:你看,我們都認(rèn)識(shí)這么久了,還沒一起吃過飯呢,不如今晚下班請(qǐng)你吃個(gè)飯?

接下來,一定要記得按時(shí)下班啊!

其實(shí),就單行而言,Python并不會(huì)比其它的多范式語言更強(qiáng),實(shí)際上由于lambda表現(xiàn)能力弱,導(dǎo)致Python本身要更弱一些。

但是,存在lambda就存在無限可能。Python中的import語句是可以通過調(diào)用__builtin__模塊中的__import__來代替的,更有意思的是,__builtin__模塊內(nèi)的所有內(nèi)容均是自動(dòng)import的。

四、附加武功秘籍

1、換臉術(shù)

這個(gè)10進(jìn)制轉(zhuǎn)換16進(jìn)制的單行代碼就是lambda無限可能的有力論證:

print("#"+''.join(["{:0>2}".format(hex(int(a))[2:])forain__import__('sys').argv[1:]]))

2、星羅陣

這樣的畫圖,只是簡(jiǎn)單的用到了調(diào)用時(shí)傳遞參數(shù)而已。

[print('\n'.join(""*abs(c)+"*"*(a-abs(c))forcinrange(-a+1,a)))forain[int(__import__('sys').argv[1])]]

3、操控術(shù)

如果調(diào)用更復(fù)雜的功能呢?例如用Flask來個(gè)Helloworld?

[y[0].run()foryin[(x,x.route('/')(lambda:'Hello,world!'))forxin[__import__('flask').Flask(__name__)]]]

使用列表生成的實(shí)現(xiàn)看起來可能不太優(yōu)雅,但并不會(huì)影響效果。

4、凌波微步

或者你還想看看帶窗口的心形曲線?不要看那個(gè)黑黑的ASCII顏藝的話可以這樣(需要numpy和matplotlib)

[plt.show()for_,__,___,pltin[(plt.plot(x,y1,color='r'),plt.plot(x,y2,color='r'),np,plt)forx,y1,y2,np,pltin[(x,0.618*np.abs(x)-0.8*np.sqrt(64-x**2),0.618*np.abs(x)+0.8*np.sqrt(64-x**2),np,plt)forx,np,pltin[(np.linspace(-8,8,1024),np,plt)fornp,pltin[(__import__('numpy'),__import__('pylab'))]]]]]

5、吸星大法

如果你是深度學(xué)習(xí)煉丹師,那不妨來個(gè)一行預(yù)測(cè)?

[print(decode(model.predict(x)))formodel,x,decodein[(ResNet50(weights='imagenet'),preprocess_input(np.expand_dims(image.img_to_array(image.load_img('elephant.jpg',target_size=(224,224))),axis=0)),decode)forResNet50,image,preprocess_input,np,decodein[(kav.applications.resnet50.ResNet50,kp.preprocessing.image,kav.applications.resnet50.preprocess_input,np,kav.applications.resnet50.decode_predictions)forkav,kp,npin[(__import__('keras.applications.resnet50'),__import__('keras.preprocessing.image'),__import__('numpy'))]]]]

按照這樣的方法,幾乎所有的代碼最終都能壓到同一行里;配合Python各種強(qiáng)大的包,寫出個(gè)一行人臉識(shí)別、一行機(jī)器學(xué)習(xí)、一行網(wǎng)頁(yè)爬蟲等都不會(huì)有什么問題。

綜上,“一行代碼”可供修煉的“功夫”多種多樣,雖然有趣,但并沒有太多的實(shí)際意義,在實(shí)際工作中沒有必要強(qiáng)行把所有的代碼都?jí)嚎s到一行中實(shí)現(xiàn)。當(dāng)然,如果是為了向妹子炫技的話,那么請(qǐng)盡管展示你的才華!

程序員學(xué)習(xí)交流請(qǐng)?zhí)砑幽秸n網(wǎng)官方客服微信:mukewang666回復(fù)暗號(hào)“前端面試”可進(jìn)前端交流群回復(fù)暗號(hào)“Java”可進(jìn)Java交流群回復(fù)暗號(hào)“專欄”可進(jìn)程序員交流群

推薦閱讀:

計(jì)算機(jī)專業(yè)同學(xué)如何避免自己成為一名低級(jí)碼農(nóng)?https://www.wukong.com/question/6546119457276690691/在做程序員的道路上,你掌握了什么概念或技術(shù)使你感覺自我提升突飛猛進(jìn)?https://www.wukong.com/question/6517473209128845575/大公司和小公司的程序員差別在哪?https://www.wukong.com/question/6514834007652303108/程序員面試的時(shí)候,大家都中過什么套路?https://www.wukong.com/question/6481413885956981005/你見過有哪些搞笑的代碼?https://www.wukong.com/question/6532626072771494147/程序員很悶騷么?https://www.wukong.com/question/6492183419819131150/

Python有什么奇技淫巧

Python奇技淫巧

當(dāng)發(fā)布python第三方package時(shí),并不希望代碼中所有的函數(shù)或者class可以被外部import,在__init__.py中添加__all__屬性,

該list中填寫可以import的類或者函數(shù)名,可以起到限制的import的作用,防止外部import其他函數(shù)或者類

#!/usr/bin/envpython

#-*-coding:utf-8-*-

frombaseimportAPIBase

fromclientimportClient

fromdecoratorimportinterface,export,stream

fromserverimportServer

fromstorageimportStorage

fromutilimport(LogFormatter,disable_logging_to_stderr,

enable_logging_to_kids,info)

__all__=['APIBase','Client','LogFormatter','Server',

'Storage','disable_logging_to_stderr','enable_logging_to_kids',

'export','info','interface','stream']

with的魔力

with語句需要支持上下文管理協(xié)議的對(duì)象,上下文管理協(xié)議包含__enter__和__exit__兩個(gè)方法.with語句建立運(yùn)行時(shí)上下文需要通過這兩個(gè)方法執(zhí)行進(jìn)入和退出操作.

其中上下文表達(dá)式是跟在with之后的表達(dá)式,該表示大返回一個(gè)上下文管理對(duì)象

#常見with使用場(chǎng)景

withopen("test.txt","r")asmy_file:#注意,是__enter__()方法的返回值賦值給了my_file,

forlineinmy_file:

printline

詳細(xì)原理可以查看這篇文章,淺談Python的with語句

知道具體原理,我們可以自定義支持上下文管理協(xié)議的類,類中實(shí)現(xiàn)__enter__和__exit__方法

#!/usr/bin/envpython

#-*-coding:utf-8-*-

classMyWith(object):

def__init__(self):

print"__init__method"

def__enter__(self):

print"__enter__method"

returnself#返回對(duì)象給as后的變量

def__exit__(self,exc_type,exc_value,exc_traceback):

print"__exit__method"

ifexc_tracebackisNone:

print"ExitedwithoutException"

returnTrue

else:

print"ExitedwithException"

returnFalse

deftest_with():

withMyWith()asmy_with:

print"runningmy_with"

print"------分割線-----"

withMyWith()asmy_with:

print"runningbeforeException"

raiseException

print"runningafterException"

if__name__=='__main__':

test_with()

執(zhí)行結(jié)果如下:

__init__method

__enter__method

runningmy_with

__exit__method

ExitedwithoutException

------分割線-----

__init__method

__enter__method

runningbeforeException

__exit__method

ExitedwithException

Traceback(mostrecentcalllast):

File"bin/python",line34,in

exec(compile(__file__f.read(),__file__,"exec"))

File"test_with.py",line33,in

test_with()

File"test_with.py",line28,intest_with

raiseException

Exception

證明了會(huì)先執(zhí)行__enter__方法,然后調(diào)用with內(nèi)的邏輯,最后執(zhí)行__exit__做退出處理,并且,即使出現(xiàn)異常也能正常退出

filter的用法

相對(duì)filter而言,map和reduce使用的會(huì)更頻繁一些,filter正如其名字,按照某種規(guī)則過濾掉一些元素

#!/usr/bin/envpython

#-*-coding:utf-8-*-

lst=[1,2,3,4,5,6]

#所有奇數(shù)都會(huì)返回True,偶數(shù)會(huì)返回False被過濾掉

printfilter(lambdax:x%2!=0,lst)

#輸出結(jié)果

[1,3,5]

一行作判斷

當(dāng)條件滿足時(shí),返回的為等號(hào)后面的變量,否則返回else后語句

lst=[1,2,3]

new_lst=lst[0]iflstisnotNoneelseNone

printnew_lst

#打印結(jié)果

1

裝飾器之單例

使用裝飾器實(shí)現(xiàn)簡(jiǎn)單的單例模式

#單例裝飾器

defsingleton(cls):

instances=dict()#初始為空

def_singleton(*args,**kwargs):

ifclsnotininstances:#如果不存在,則創(chuàng)建并放入字典

instances[cls]=cls(*args,**kwargs)

returninstances[cls]

return_singleton

@singleton

classTest(object):

pass

if__name__=='__main__':

t1=Test()

t2=Test()

#兩者具有相同的地址

printt1,t2

staticmethod裝飾器

類中兩種常用的裝飾,首先區(qū)分一下他們

普通成員函數(shù),其中第一個(gè)隱式參數(shù)為對(duì)象

classmethod裝飾器,類方法(給人感覺非常類似于OC中的類方法),其中第一個(gè)隱式參數(shù)為類

staticmethod裝飾器,沒有任何隱式參數(shù).python中的靜態(tài)方法類似與C++中的靜態(tài)方法

#!/usr/bin/envpython

#-*-coding:utf-8-*-

classA(object):

#普通成員函數(shù)

deffoo(self,x):

print"executingfoo(%s,%s)"%(self,x)

@classmethod#使用classmethod進(jìn)行裝飾

defclass_foo(cls,x):

print"executingclass_foo(%s,%s)"%(cls,x)

@staticmethod#使用staticmethod進(jìn)行裝飾

defstatic_foo(x):

print"executingstatic_foo(%s)"%x

deftest_three_method():

obj=A()

#直接調(diào)用噗通的成員方法

obj.foo("para")#此處obj對(duì)象作為成員函數(shù)的隱式參數(shù),就是self

obj.class_foo("para")#此處類作為隱式參數(shù)被傳入,就是cls

A.class_foo("para")#更直接的類方法調(diào)用

obj.static_foo("para")#靜態(tài)方法并沒有任何隱式參數(shù),但是要通過對(duì)象或者類進(jìn)行調(diào)用

A.static_foo("para")

if__name__=='__main__':

test_three_method()

#函數(shù)輸出

executingfoo(

executingclass_foo(

executingclass_foo(

executingstatic_foo(para)

executingstatic_foo(para)

property裝飾器

定義私有類屬性

將property與裝飾器結(jié)合實(shí)現(xiàn)屬性私有化(更簡(jiǎn)單安全的實(shí)現(xiàn)get和set方法)

#python內(nèi)建函數(shù)

property(fget=None,fset=None,fdel=None,doc=None)

fget是獲取屬性的值的函數(shù),fset是設(shè)置屬性值的函數(shù),fdel是刪除屬性的函數(shù),doc是一個(gè)字符串(likeacomment).從實(shí)現(xiàn)來看,這些參數(shù)都是可選的

property有三個(gè)方法getter(),setter()和delete()來指定fget,fset和fdel。這表示以下這行

classStudent(object):

@property#相當(dāng)于property.getter(score)或者property(score)

defscore(self):

returnself._score

@score.setter#相當(dāng)于score=property.setter(score)

defscore(self,value):

ifnotisinstance(value,int):

raiseValueError('scoremustbeaninteger!')

ifvalue100:

raiseValueError('scoremustbetween0~100!')

self._score=value

iter魔法

通過yield和__iter__的結(jié)合,我們可以把一個(gè)對(duì)象變成可迭代的

通過__str__的重寫,可以直接通過想要的形式打印對(duì)象

#!/usr/bin/envpython

#-*-coding:utf-8-*-

classTestIter(object):

def__init__(self):

self.lst=[1,2,3,4,5]

defread(self):

foreleinxrange(len(self.lst)):

yieldele

def__iter__(self):

returnself.read()

def__str__(self):

return','.join(map(str,self.lst))

__repr__=__str__

deftest_iter():

obj=TestIter()

fornuminobj:

printnum

printobj

if__name__=='__main__':

test_iter()

神奇partial

partial使用上很像C++中仿函數(shù)(函數(shù)對(duì)象).

在stackoverflow給出了類似與partial的運(yùn)行方式

defpartial(func,*part_args):

defwrapper(*extra_args):

args=list(part_args)

args.extend(extra_args)

returnfunc(*args)

returnwrapper

利用用閉包的特性綁定預(yù)先綁定一些函數(shù)參數(shù),返回一個(gè)可調(diào)用的變量,直到真正的調(diào)用執(zhí)行

#!/usr/bin/envpython

#-*-coding:utf-8-*-

fromfunctoolsimportpartial

defsum(a,b):

returna+b

deftest_partial():

fun=partial(sum,2)#事先綁定一個(gè)參數(shù),fun成為一個(gè)只需要一個(gè)參數(shù)的可調(diào)用變量

printfun(3)#實(shí)現(xiàn)執(zhí)行的即是sum(2,3)

if__name__=='__main__':

test_partial()

#執(zhí)行結(jié)果

5

神秘eval

eval我理解為一種內(nèi)嵌的python解釋器(這種解釋可能會(huì)有偏差),會(huì)解釋字符串為對(duì)應(yīng)的代碼并執(zhí)行,并且將執(zhí)行結(jié)果返回

看一下下面這個(gè)例子

#!/usr/bin/envpython

#-*-coding:utf-8-*-

deftest_first():

return3

deftest_second(num):

returnnum

action={#可以看做是一個(gè)sandbox

"para":5,

"test_first":test_first,

"test_second":test_second

}

deftest_eavl():

condition="para==5andtest_second(test_first)>5"

res=eval(condition,action)#解釋condition并根據(jù)action對(duì)應(yīng)的動(dòng)作執(zhí)行

printres

if__name__=='_

exec

exec在Python中會(huì)忽略返回值,總是返回None,eval會(huì)返回執(zhí)行代碼或語句的返回值

exec和eval在執(zhí)行代碼時(shí),除了返回值其他行為都相同

在傳入字符串時(shí),會(huì)使用compile(source,'

#!/usr/bin/envpython

#-*-coding:utf-8-*-

deftest_first():

print"hello"

deftest_second():

test_first()

print"second"

deftest_third():

print"third"

action={

"test_second":test_second,

"test_third":test_third

}

deftest_exec():

exec"test_second"inaction

if__name__=='__main__':

test_exec()#無法看到執(zhí)行結(jié)果

getattr

getattr(object,name[,default])Returnthevalueof

thenamedattributeofobject.namemustbeastring.Ifthestringis

thenameofoneoftheobject’sattributes,theresultisthevalueof

thatattribute.Forexample,getattr(x,‘foobar’)isequivalentto

x.foobar.Ifthenamedattributedoesnotexist,defaultisreturnedif

provided,otherwiseAttributeErrorisraised.

通過string類型的name,返回對(duì)象的name屬性(方法)對(duì)應(yīng)的值,如果屬性不存在,則返回默認(rèn)值,相當(dāng)于object.name

#使用范例

classTestGetAttr(object):

test="testattribute"

defsay(self):

print"testmethod"

deftest_getattr():

my_test=TestGetAttr()

try:

printgetattr(my_test,"test")

exceptAttributeError:

print"AttributeError!"

try:

getattr(my_test,"say")()

exceptAttributeError:#沒有該屬性,且沒有指定返回值的情況下

print"MethodError!"

if__name__=='__main__':

test_getattr()

#輸出結(jié)果

testattribute

testmethod

命令行處理

defprocess_command_line(argv):

"""

Returna2-tuple:(settingsobject,argslist).

`argv`isalistofarguments,or`None`for``sys.argv[1:]``.

"""

ifargvisNone:

argv=sys.argv[1:]

#initializetheparserobject:

parser=optparse.OptionParser(

formatter=optparse.TitledHelpFormatter(width=78),

add_help_option=None)

#defineoptionshere:

parser.add_option(#customizeddescription;put--helplast

'-h','--help',action='help',

help='Showthishelpmessageandexit.')

settings,args=parser.parse_args(argv)

#checknumberofarguments,verifyvalues,etc.:

ifargs:

parser.error('programtakesnocommand-linearguments;'

'"%s"ignored.'%(args,))

#furtherprocesssettings&argsifnecessary

returnsettings,args

defmain(argv=None):

settings,args=process_command_line(argv)

#applicationcodehere,like:

#run(settings,args)

return0#success

if__name__=='__main__':

status=main()

sys.exit(status)

讀寫csv文件

#從csv中讀取文件,基本和傳統(tǒng)文件讀取類似

importcsv

withopen('data.csv','rb')asf:

reader=csv.reader(f)

forrowinreader:

printrow

#向csv文件寫入

importcsv

withopen('data.csv','wb')asf:

writer=csv.writer(f)

writer.writerow(['name','address','age'])#單行寫入

data=[

('xiaoming','china','10'),

('Lily','USA','12')]

writer.writerows(data)#多行寫入

各種時(shí)間形式轉(zhuǎn)換

只發(fā)一張網(wǎng)上的圖,然后差文檔就好了,這個(gè)是記不住的

字符串格式化

一個(gè)非常好用,很多人又不知道的功能

>>>name="andrew"

>>>"mynameis{name}".format(name=name)

'mynameisandrew'

python switch case語句的用法

在Python中,雖然沒有類似于其他編程語言(如C、C++、Java等)的switch-case語句,但可以使用`if-elif-else`結(jié)構(gòu)來實(shí)現(xiàn)類似的功能。以下是一個(gè)示例:

```python

defswitch_case(value):

ifvalue==1:

print("Option1")

elifvalue==2:

print("Option2")

elifvalue==3:

print("Option3")

else:

print("Invalidoption")

value=int(input("Enteravalue(1,2,or3):"))

switch_case(value)

```

在這個(gè)示例中,我們定義了一個(gè)名為`switch_case`的函數(shù),該函數(shù)接受一個(gè)參數(shù)`value`。根據(jù)`value`的不同,我們使用`if-elif-else`結(jié)構(gòu)來執(zhí)行不同的操作。

用戶輸入一個(gè)值(1、2或3),并將其存儲(chǔ)在變量`value`中。然后調(diào)用`switch_case`函數(shù)并傳入`value`參數(shù)。根據(jù)輸入的值,函數(shù)將輸出相應(yīng)的選項(xiàng)。

雖然Python沒有內(nèi)置的switch-case語句,但使用`if-elif-else`結(jié)構(gòu)可以實(shí)現(xiàn)類似的功能。這種方式更具靈活性,因?yàn)镻ython的`if`語句可以在條件為真時(shí)執(zhí)行任意代碼,而不僅限于一個(gè)語句。

OK,關(guān)于lambda python用法菜鳥和pythonlambda多行的內(nèi)容到此結(jié)束了,希望對(duì)大家有所幫助。