zoukankan      html  css  js  c++  java
  • Python学习笔记-20180426

    1. 有一些变量前面只有一个下划线_name,这样的实例变量外部是可以访问的,但是,按照约定俗成的规定,当你看到这样的变量时,意思就是,“虽然我可以被访问,但是,请把我视为私有变量,不要随意访问”。

    2. 动态语言的鸭子类型特点决定了继承不像静态语言那样是必须的。静态语言 vs 动态语言
      对于静态语言(例如 Java)来说,如果需要传入Animal类型,则传入的对象必须是Animal类型或者它的子类,否则,将无法调用run()方法。
      对于 Python 这样的动态语言来说,则不一定需要传入Animal类型。我们只需要保证传入的对象有一个run()方法就可以了:

    class Timer(object):
    def run(self):
    print('Start...')
    

    这就是动态语言的 “鸭子类型”,它并不要求严格的继承体系,一个对象只要 “看起来像鸭子,走起路来像鸭子”,那它就可以被看做是鸭子。
    Python 的 “file-like object“就是一种鸭子类型。对真正的文件对象,它有一个read()方法,返回其内容。但是,许多对象,只要有read()方法,都被视为 “file-like object“。许多函数接收的参数就是 “file-like object“,你不一定要传入真正的文件对象,完全可以传入任何实现了read()方法的对象。

    1. Python 中的方法可以动态绑定到类或者实例。

    2. 定义一个特殊的__slots__变量,来限制该 class 实例能添加的属性:

    class Student(object):
    __slots__ = ('name', 'age') # 用tuple定义允许绑定的属性名称
    
    1. __slots__定义的属性仅对当前类实例起作用,对继承的子类是不起作用的

    2. 返回闭包时牢记一点:返回函数不要引用任何循环变量,或者后续会发生变化的变量。

    3. 偏函数: 简单总结functools.partial的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。

    4. 在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用。在 Python 中,是通过_前缀来实现的。

    5. 注:name两边各有2个下划线__name__有2个取值:当模块是被调用执行的,取值为模块的名字;当模块是直接执行的,则该变量取值为__main__。这样在模块被调用的时候,通过 if 语句就可以避免模块内多余的输出语句等等。

  • 相关阅读:
    MySQL监控全部执行过的sql语句
    Linux之网络编程:时间服务器
    人生哲理 |南怀瑾最经典的50句话
    TCP/IP协议(一)网络基础知识 网络七层协议
    Linux下进程通信之管道
    一个完整的项目管理流程
    Linux编程之select
    (笔记)电路设计(十四)之放大器的应用
    ds18b20采集温度并上报服务器
    java中基于swing库自定义分页组件
  • 原文地址:https://www.cnblogs.com/JackKing-defier/p/8984386.html
Copyright © 2011-2022 走看看