为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
python进阶_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
    • 先定义能计算乘积的函数,再将此函数返回。

      参考代码:

      def calc_prod(lst):
          def lazy_prod():
              def f(x, y):
                  return x * y
              return reduce(f, lst, 1)
          return lazy_prod
      f = calc_prod([1, 2, 3, 4])
      print f()
    查看全部
  • Python的函数不但可以返回int、str、list、dict等数据类型,还可以返回函数!

    查看全部
  • filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。


    查看全部
  • 方法也是一个属性,所以,它也可以动态地添加到实例上,只是需要用 types.MethodType() 把一个函数变为一个方法:

    import types
    def fn_get_grade(self):
        if self.score >= 80:
            return 'A'
        if self.score >= 60:
            return 'B'
        return 'C'
    
    class Person(object):
        def __init__(self, name, score):
            self.name = name
            self.score = score
    
    p1 = Person('Bob', 90)
    p1.get_grade = types.MethodType(fn_get_grade, p1, Person)
    print p1.get_grade()
    # => A


    查看全部
  • 实例的方法就是在类中定义的函数,它的第一个参数永远是 self,指向调用该方法的实例本身,其他参数和一个普通函数是完全一样的

    查看全部
  • 当实例属性和类属性重名时,实例属性优先级高,它将屏蔽掉对类属性的访问。

    查看全部
  • 需要导入模块 from functools import reduce
    查看全部
  • 实例属性每个实例各自拥有,互相独立,而类属性有且只有一份。

    由于Python是动态语言,类属性也是可以动态添加和修改的,当类属性发生改变时,实例访问到的类的属性就变化了

    查看全部
  • 双下划线(__)开头的属性无法被外部访问;

    开头结尾处都有双下划线(__)的是特殊属性,不可用此方式定义普通属性,此属性可以被外部访问;

    单下划线(_)开头的属性可以被外部访问,但按习惯,它们也不应该被外部访问


    查看全部
  • print (list(map( f,[1,2,3,4,5])))
    查看全部
  • 开根:math.sqrt
    查看全部
  • 返回值和返回函数是不一样的,返回函数还可以把一些计算延迟执行。

    查看全部
  • 包是文件夹,模块是.py文件,包下面必须有一个__init__.py文件,而且包如果有多层的话,则每一层都要有,只有这样,python才能把该文件夹当成包来处理

    查看全部
  • 由于Python是动态语言,任何实例在运行期都可以动态地添加属性。

    如果要限制添加的属性,例如,Student类只允许添加 name、gender和score 这3个属性,就可以利用Python的一个特殊的__slots__来实现。

    顾名思义,__slots__是指一个类允许的属性列表:

    class Student(object):
        __slots__ = ('name', 'gender', 'score')
        def __init__(self, name, gender, score):
            self.name = name
            self.gender = gender
            self.score = score


    查看全部
    0 采集 收起 来源:python中 __slots__

    2019-04-06

  • 任务

    如果没有定义set方法,就不能对“属性”赋值,这时,就可以创建一个只读“属性”。

    请给Student类加一个grade属性,根据 score 计算 A(>=80)、B、C(<60)。

    class Student(object):


        def __init__(self, name, score):

            self.name = name

            self.__score = score


        @property

        def score(self):

            return self.__score


        @score.setter

        def score(self, score):

            if score < 0 or score > 100:

                raise ValueError('invalid score')

            self.__score = score


        @property

        def grade(self):

            if self.score>=80:

                return 'A'

            elif self.score<60:

                return 'C'

            else:

                return 'B'


    s = Student('Bob', 59)

    print s.grade


    s.score = 60

    print s.grade


    s.score = 104

    print s.grade


    查看全部
    0 采集 收起 来源:python中 @property

    2019-04-06

举报

0/150
提交
取消
课程须知
本课程是Python入门的后续课程 1、掌握Python编程的基础知识 2、掌握Python函数的编写 3、对面向对象编程有所了解更佳
老师告诉你能学到什么?
1、什么是函数式编程 2、Python的函数式编程特点 3、Python的模块 4、Python面向对象编程 5、Python强大的定制类
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!