創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!
創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)整合營銷推廣、網(wǎng)站重做改版、洛浦網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、html5、成都做商城網(wǎng)站、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為洛浦等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。這篇文章運(yùn)用簡單易懂的例子給大家介紹Python中怎么使用常見函數(shù)使,代碼非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
python eval() hasattr() getattr() setattr() 函數(shù)使用方法詳解
eval() 函數(shù) --- 將字符串str當(dāng)成有效的表達(dá)式來求值并返回計算結(jié)果。
語法:eval(source[, globals[, locals]]) ---> value
參數(shù):
source:一個Python表達(dá)式或函數(shù)compile()返回的代碼對象
globals:可選。必須是dictionary
locals:可選。任意map對象
實(shí)例1:
可以把list,tuple,dict和string相互轉(zhuǎn)化。
a = '[[1,2], [3,4], [5,6], [7,8]]' a = '[{'name':'haha','age':18}]' print(type(a), a) #b = eval(a) print(type(b), b) # c = '{"name":"aaa", "age":18}' print(type(c), c) # d = eval(c) print(type(d), d) # e = "([1,2], [3,4], [5,6], [7,8], (9,0))" print(type(e), e) f = eval(e) print(type(f), f) #
運(yùn)行結(jié)果:
[[1,2], [3,4], [5,6], [7,8]] [[1, 2], [3, 4], [5, 6], [7, 8]] {"name":"aaa", "age":18} {'name': 'aaa', 'age': 18} ([1,2], [3,4], [5,6], [7,8], (9,0)) ([1, 2], [3, 4], [5, 6], [7, 8], (9, 0))
實(shí)例2:
在編譯語言里要動態(tài)地產(chǎn)生代碼,基本上是不可能的,但動態(tài)語言是可以,意味著軟件已經(jīng)部署到服務(wù)器上了,但只要作很少的更改,只好直接修改這部分的代碼,就可立即實(shí)現(xiàn)變化,不用整個軟件重新加。
a=1 g={'a':20} eval("a+1",g) 運(yùn)行結(jié)果:21
hasattr(object, name) 函數(shù):
判斷一個對象里面是否有name屬性或者name方法,返回bool值,有name屬性返回True,否則返回False。
注意: name要用括號括起來。
class function_demo(): name = 'demo' def run(self): return "hello function" functiondemo = function_demo() res = hasattr(functiondemo, 'name') #判斷對象是否有name屬性,True res = hasattr(functiondemo, "run") #判斷對象是否有run方法,True res = hasattr(functiondemo, "age") #判斷對象是否有age屬性,F(xiàn)alsw print(res)
getattr(object, name[,default]) 函數(shù):
獲取對象object的屬性或者方法,如果存在則打印出來,如果不存在,打印默認(rèn)值,默認(rèn)值可選。
注意:如果返回的是對象的方法,則打印結(jié)果是:方法的內(nèi)存地址,如果需要運(yùn)行這個方法,可以在后面添加括號()
class function_demo(): name = 'demo' def run(self): return "hello function" functiondemo = function_demo() getattr(functiondemo, 'name') #獲取name屬性,存在就打印出來--- demo getattr(functiondemo, "run") #獲取run方法,存在打印出 方法的內(nèi)存地址---> getattr(functiondemo, "age") #獲取不存在的屬性,報錯如下: Traceback (most recent call last): File "/Users/liuhuiling/Desktop/MT_code/OpAPIDemo/conf/OPCommUtil.py", line 39, in res = getattr(functiondemo, "age") AttributeError: 'function_demo' object has no attribute 'age' getattr(functiondemo, "age", 18) #獲取不存在的屬性,返回一個默認(rèn)值
setattr(object, name,values) 函數(shù):
給對象的屬性賦值,若屬性不存在,先創(chuàng)建再賦值。
class function_demo(): name = 'demo' def run(self): return "hello function" functiondemo = function_demo() res = hasattr(functiondemo, 'age') # 判斷age屬性是否存在,F(xiàn)alse print(res) setattr(functiondemo, 'age', 18 ) #對age屬性進(jìn)行賦值,無返回值 res1 = hasattr(functiondemo, 'age') #再次判斷屬性是否存在,True print(res1)
綜合使用:
class function_demo(): name = 'demo' def run(self): return "hello function" functiondemo = function_demo() res = hasattr(functiondemo, 'addr') # 先判斷是否存在 if res: addr = getattr(functiondemo, 'addr') print(addr) else: addr = getattr(functiondemo, 'addr', setattr(functiondemo, 'addr', '北京首都')) #addr = getattr(functiondemo, 'addr', '河南許昌') print(addr)
python中 and和or的用法:
python中的and從左到右計算表達(dá)式,若所有值為真,則返回最后一個值,若存在假,返回第一個假值。
or 也是從左到右計算表達(dá)式,返回第一個為真的值。
# a 與b 均為真,返回最后一個為真的值,返回b的值 a = 1 b = 2 print(a and b) >>>> 2 # c 與 d 有一個為假,返回第一個為假的值,返回c的值 c = 0 d = 2 print(c and d) >>>>>0 # e 與f 均為真,返回第一個 為真的值,返回e的結(jié)果 e = 1 f = 2 print(e or f) >>>>>>1 # g 與h 為假,返回第一個 為真的值,返回h的結(jié)果 g= '' h=1 print(g or h) >>>>>1
類似三目表達(dá)式的用法:bool? a : b
a ='first' b ='second' 1and a or b # 等價于 bool = true時的情況,a與b均為真 'first' >>>0and a or b # 等價于 bool = false時的情況 'second' >>> a ='' >>>1and a or b # a為假時,則出現(xiàn)問題 'second' >>>(1and[a]or[b])[0]# 安全用法,因?yàn)閇a]不可能為假,至少有一個元素
關(guān)于Python中怎么使用常見函數(shù)使就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。