持续更新Python的一些小知识、、、、、

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

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)

猜你喜欢

转载自blog.csdn.net/qq_42543314/article/details/81023554