持續更新Python的一些小知識、、、、、
阿新 • • 發佈:2018-12-15
在軟體行業,落後就要捱打,作為技術人,需要持續不斷的學習,才能不讓自己淘汰,所以建議多寫部落格,多讀部落格,多看看別人的技術分享,瞭解和使用開源的框架和專案,這樣才能學得更快和更有規律的學習。
1.高階函式的應用
space='----------------------------' coda='hello world' print(space.join(coda)) def test(content,insert): print(insert.join(content)) test('今天是週四,馬上週六,好開心','?') # map reduce def newMap(value): print(value) # map 裡面需要兩個值 # 值1:必須是函式 # 值2:序列,容器 # 作用:將序列裡面的每個元素單獨放入函式中執行 list(map(newMap,[1,2,3,4])) # 需求:將資料表裡面所有的資料前面新增一個完成時間 # map 的作用就是依次處理序列裡面的所有元素 # 和for迴圈類似 def changeAllData(value): return '完成時間;2018-8-8'+value result=list(map(changeAllData,['學習ajaxs','學習AFnet','學習FMAS'])) print(result) def changeData(value): pass from functools import reduce def newReduce(value1,value2): # reduce 會將序列裡面所有的元素操作兩次 # 實現步驟是:將任意一個值前面的兩個值進行處理 # 處理的結果再和這個值進行處理 # 處理的結果給下一個值使用 # 所以必須有返回值 # return value1 +'的好朋友是'+value2 result=reduce(newReduce,['小王','小張','小美','小明']) print(result) def count(index1,index2): return index1+index2 result=reduce(count,[1,2,3,4,5]) print(result) def test(a,*args,**kwargs): print(a) print(args) # kwargs必須一個關鍵引數 不能為字典型別 print(kwargs) # 方法裡面的實參必須和形參對應 test('張三',17,True,'李四',{'name':'xai'},friend='zha') comtent='print("0hello world")' print(comtent) # 將指定的字串當成程式碼處理 eval(comtent) # 宣告一個函式可以進行任意的加減乘除運算 def myFun(content,method='+'): content=method.join(content) print(eval(content)) myFun('12564544',method='*') # 匿名函式 # 函式都是有名字的 沒有名字的函式叫做匿名函式 def test(): pass test() # lambda 表示該函式為匿名函式 匿名函式後面的x表示接受的引數 # :x 表示返回x result=lambda x:x print(result(2)) def test(x): return x print(test(2)) result=lambda x,y :x+y print(result(3,4)) def test(x,y): return x+y print(test(3,4)) list=[1,5,6,89,66,46,23] # sorted排序 reverse=反序 list=sorted(list,key=lambda x :x,reverse=True) print(list)
2.類和物件的區分
# 類:抽象 整體 全域性 人類 星球
# 物件:具體 個體 區域性 張三丰 地球
# 物件是從類中分離出來的一個具體的個體
# 面向物件程式設計
# object 任何一個物件都直接或者間接繼承自object
# 從功能上定義:類是屬性和方法的集合
class Hero(object):
# 屬性 稱之為類屬性
blood=700
attact=67
level=1
#方法
def skill(self):
print('致盲射擊')
timo=Hero()
timo.skill()
print(Hero.blood)
print(timo.blood)
class People(object):
# __init__() 初始化
# 當隊形建立的時候 屬性的預設值
content = 0
# 物件建立的時候會自動呼叫init方法
# 如果init方法需要引數的話
# 那麼物件在建立的時候也需要引數
def __init__(self,name,sex,age):
self.name=name
self.age=age
self.sex=sex
# 物件方法
def sleep(self):
print('{}一天要睡十七八個小時'.format(self.name))
def work(self):
print('工作時間太短,不開心')
def fond(self):
print('人生苦短,幸虧我甜')
# 模子_________
zhangSan=People('張三','男','17')
zhangSan.sleep()
lisi=People('李四','男','25')
lisi.sleep()
print(People.content)
# 類屬性可以通過物件來呼叫
print(lisi.content)
print(zhangSan.name)
zhangSan.work()
# TypeError: work() missing 1 required positional argument: 'self'
# 型別錯誤: work裡面需要用到一個引數self
# work 方法是People 裡面的物件方法 self指的就是people的物件
# 所以在呼叫的時候 需要傳入一個People的物件
People.work(zhangSan)
class Person(object):
# 如果初始化的時候設定了預設值 那麼在建立物件 可以不必設定引數
def __init__(self,name='',age='',sex='',fond=''):
self.name=name
# 屬性前面新增下劃線的這種方式叫做私有屬性
# 也就是不想被別人訪問的屬性
# 但是這種屬性不是絕對訪問不了
# 可以在通過在屬性前面新增下劃線的方式來訪問
self._age=age
self._sex=sex
# 屬性如果是雙下劃線,如果想要呼叫屬性
# 需要通過p1._Person__fond這種方式來呼叫
self.__fond=fond
#get set 方法
# @property 屬性
# @attribute 屬性
# @property 宣告get set 方法的標記
@property
def fond(self):
print('get方法被呼叫了')
return self.__fond
@fond.setter
def fond(self,fond):
self.__fond=fond
print('set方法被呼叫了')
p1=Person('張三丰',149,'男','練劍')
print(p1.name,p1._age)
print(p1._age)
print(p1._sex)
# AttributeError: 'Person' object has no attribute '__fond'
# 屬性錯誤:python裡面沒有__fond 屬性
# print(p1.__fond)
print(p1._Person__fond)
print(p1.fond)
p1.fond='練拳'
3.繼承
# object 祖類或者超類
# 子類能夠繼承父類的屬性和方法
class People(object):
def __init__(self,name='',sex='',age=''):
self.name=name
self.sex=sex
self.age=age
def eat(self):
print('或者是為了吃')
#函式可以為任意型別
def makeFriendWithOtherPeople(self,other):
print('{}想和{}交朋友'.format(self.name,other.name))
class Man(People):
def __init__(self,name='',sex='',age='',huZi=''):
# 繼承父類的屬性
super(Man, self).__init__(name,sex,age)
self.huZi=huZi
# 重寫父類的同名方法
def eat(self):
# 繼承父類的方法
super(Man,self).eat()
print('我張三丰餓死也不吃')
sanfeng=Man('張三丰','男',149,'白鬍子')
sanfeng.name='三豐'
print(sanfeng.name)
print(sanfeng.huZi)
sanfeng.eat()
damo=Man('達摩','男',147,'沒有')
sanfeng.makeFriendWithOtherPeople(damo)