python学习系列--day04

一、函数式编程

1、返回函数

      函数的返回值可以是一个函数。在返回函数时,函数没有执行,返回函数不能引用任何可变的变量

      def delay_sum(*arg):

            ax = 0            

           def sum():

                  for n in arg:

                       ax += n

                  return ax

            return sum

2、匿名函数

      lambda x : x *x 等效于

      def f(x):

            return x*x

3、装饰器decorator

      在函数运行期间动态增加函数的功能,原函数不改变定义。     

      def log(func):#装饰器

            def wrapper(*args,**kw):

                      print('This is wrapper')

            return wrapper

      @log

      def  now():

             print('2019-3-30')

4、偏函数

     利用functools.partial(func,**kw),把函数func的某些参数给固定,返回一个新的函数。

      如定义一个新的函数,实现计算出二进制字符串所对应的十进制数:

      import functools

      int2 = functools.partial(int,base = 2)

      int2('100')  #4

      那么这个可以用到自定义的函数吗? Y

二、模块

        一个.py文件就是一个模块

1、基本知识

      将模块放入包中,每一个包有一个__init__.py(注意是2个下划线),而且该模块是必须存在的,标识着该目录是一个包而不是普通目录。

      检查一个模块是否存在   import abc 若未出错,则表示存在

      _xxxx 表示该变量为私有的     如_abs,_a   不应该被直接访问,一般的变量是公开的

2、安装模块 pip install xxx

三、面向对象 OPP

       三大特点:数据封装、继承和多态

1、结构及其调用

     class  Student(object): #object 为固定的,表示一个原生的类

              def __init__(self,name,score):# self参数为必须的参数,调用时不需要给self传参

                       self.name = name

                       self.score = socre

              def print_score(self):

                     print(self.score)

 

       调用:

       from student import Student #上面的类存在student.py中

       jamson = Student('Jamson',99)

       jamson.print_score()

2、限制访问

     对对象的属性值进行限制,禁止外部访问修改,在变量名前加上2个下划线

     class  Student(object): #object 为固定的

              def __init__(self,name,score):# self参数为必须的参数,调用时不需要给self传参

                       self.__name = name

                       self.__score = socre

3、继承和多态

      def Animal(object):

            def run(self):

                  print('Animal is runing...')

      def Dog(Animal):#表示继承Animal

            pass

      dog  =  Dog()

      dog.run()

4、获取对象信息

     获取类型:type()

     type(123) == int #True

     利用isinstance(dog,Dog)

     getattr(obj,'x',404) #得到属性x的值,则返回404

     hasattr(obj,'insert') #查询obj对象是否有insert方法或者属性

     setattr(obj,'y') # 给对象新增y属性

     del obj.y   # 删除对象的y属性

                           

                                                                                                                                                              next

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值