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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
  • 函数:函数是封装了一些独立的功能,可以直接调用,能将一些数据(参数)传递进去进行处理,然后返回一些数据(返回值),也可以没有返回值。可以直接在模块中进行定义使用。

    所有传递给函数的数据都是显式传递的。

    方法:方法和函数类似,同样封装了独立的功能,但是方法是只能依靠类或者对象来调用的,表示针对性的操作。方法中的数据self和cls是隐式传递的,即方法的调用者;方法可以操作类内部的数据

    总结:简单的说,函数在python中独立存在,可直接使用的,而方法是必须被别人调用才能实现的。静态方法除外(与类和对象均无关,通过类名和对象名均可被调用,属函数)


    题目中  p1.get_grade  没有加括号,即不是调用,加了括号就变成了通过对象调用(并且为get_grade()赋值了),就成了方法

    注:绑定(调用)不是指" . "这个符号,这个符号说实在的只有域名的作用。绑定在这里是指,会默认赋值该绑定的对象。


    查看全部
  • myabs = lambda x: -x if x < 0 else x


    查看全部
  • def count():

        fs = []

        for i in range(1, 4):

            def f(j):

                def g():

                    return j*j

                return g

            r=f(i)

            fs.append(r)

        return fs


    f1, f2, f3 = count()

    print f1(), f2(), f3()


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

    2018-11-09

  • 内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)

    闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变。

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

    2018-11-09

  • # coding=utf-8

    def get_grade(self):
            if self.__score>=90:
                return "A-优秀"
            if self.__score>=60:
                return "B-及格"
            else:
                return "C-不合格"

    查看全部
  • 实例属性每个实例各自拥有,互相独立,而类属性有且只有一份。

    count是类属性,类的名字叫Person,self是实例名

    Person.count

    查看全部
  • reduce()还可以接收第3个可选参数,作为计算的初始值。如果把初始值设为100,计算:

    reduce(f, [1, 3, 5, 7, 9], 100)

    结果将变为125,因为第一轮计算是:

    计算初始值和第一个元素:f(100, 1),结果为101。


    查看全部
  • class Person(object):


        __slots__ = ('name', 'gender')


        def __init__(self, name, gender):

            self.name = name

            self.gender = gender


    class Student(Person):

    限制属性

        __slots__ = ('score' ,)


        #__slots__ = ('name', 'gender', 'score')

        

        def __init__(self,name,gender,score):

            super(Student,self).__init__(name,gender)

            self.score=score


    s = Student('Bob', 'male', 59)

    s.name = 'Tim'

    s.score = 99

    print s.score


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

    2018-11-08

  • 2.7中/表示取整,//表示真实的值也就是浮点数

    3.x中 /得到浮点数,//得到整数


    查看全部
  • Python对属性权限的控制是通过属性名来实现的,如果一个属性由双下划线开头(__),该属性就无法被外部访问

    查看全部
  • __init__() 方法的第一个参数必须是 self(也可以用别的名字,但建议使用习惯用法),后续参数则可以自由指定,和定义函数没有任何区别。

    class Person(object):
        def __init__(self,name,gender,birth,**kw):
            self.name = name
            self.gender = gender
            self.birth = birth
            for k,v in kw.iteritems():
                setattr(self,k,v)

    xiaoming = Person('Xiao Ming', 'Male', '1990-1-1', job='Student')

    print xiaoming.name
    print xiaoming.job


    查看全部
  • __future__  前后都是两个单下划线!!!

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

    查看全部
  • 实例属性每个实例各自拥有,互相独立,而类属性有且只有一份。


    而且用类的名字引用

    class Person(object):

        count = 0

        def __init__(self,name):

            Person.count=Person.count+1

            self.name=name


    p1 = Person('Bob')

    print Person.count


    p2 = Person('Alice')

    print Person.count


    p3 = Person('Tim')

    print Person.count


    查看全部
  • 模块解决代码多的问题,包解决模块名冲突

    包就是文件夹

    模块就是###.py文件   eg:test.py就是test模块    如果遇到相同模块名,只要把他们放在不同的包里,也就不会影响    eg:p1.test      p2.test

    包可以多级   包下面有_init_.py,每层都要有,这样才能与目录区分,python才会把它当包来处理

    查看全部

举报

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

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