在软件行业,落后就要挨打,作为技术人,需要持续不断的学习,才能不让自己淘汰,所以建议多写博客,多读博客,多看看别人的技术分享,了解和使用开源的框架和项目,这样才能学得更快和更有规律的学习。
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)