zoukankan      html  css  js  c++  java
  • 6、抽象、更加抽象

    抽象(函数)

    创建函数:def 函数名(参数):即可,如需返回值,函数中包含return语句。

    记录函数:如果在函数的开头写下字符串,它就会作为函数的一部分进行存储,称为文档字符串。

    若要使用函数修改外部变量值,可以返回值赋予该变量,也可以使用列表传参。

    C/C++中的参数叫做位置参数,Python不仅支持位置参数(它们的位置很重要,比他们的名字更重要),还支持关键字参数。关键字参数可以明确每个参数的作用,使每个参数的含义变得清晰,而且弄错顺序程序也不受影响;另外使用关键字参数在函数中可以给参数提供默认值。

    >>> def hello(greeting='hello',name='houkai'):
        print (greeting,name)

    位置和关键字参数是可以联合使用的,要把位置参数放在前面就可以了。

    收集参数,*参数名表示将所有剩下的参数放在元组中。**参数名可以收集关键字参数放在字典中。

    作用域:globals函数获取全局变量值,locals返回局部变量的字典,vars函数返回含局部变量的所有变量字典。

    如果在函数内声明(如果存在则直接使用)全局变量,使用global标示符。

    递归调用中的经典应用:阶乘和幂

    >>> def factorial(n):
        if n==1:
            return 1
        else:
            return n*factorial(n-1)
    >>> factorial(5)
    120
    >>> def power(x,n):
        if n==0:
            return 1
        else:
            return x*power(x,n-1)
    >>> power(2,3)
    8

    这里的相似之处是n时的结果可以通过n-1时的结果来构建。

    二分查找

    seq=[1,2,3,4,5,6,7,8,9]
    >>> def search(seq,number,lower=0,upper=None):
        if upper is None:upper = len(seq)-1
        if lower == upper:
            assert number == seq[upper]
            return upper
        else:
            middle = (lower+upper)//2
            if number > seq[middle]:
                return search(seq,number,middle+1,upper)
            else:
                return search(seq,number,lower,middle)
    >>> search(seq,4)
    3

    更加抽象(类)

    多态,同样的方法会根据调用对象类型的不同而产生不同行为。

    封装,不同的对象具有独立的空间,相关独立。

    继承,维护程序开发的结构性与简洁。

    类的定义,class name:即可,使用s = name(),创建了对象。

    _xxx不能用于’from module import *’ 以单下划线开头的表示的是protected类型的变量。即保护类型只能允许其本身与子类进行访问。

    __xxx双下划线的表示的是私有类型的变量。只能是允许这个类本身进行访问了。连子类也不可以

    __xxx___ 定义的是特列方法。像__init__之类的

    类变量紧接在类名后面定义,相当于java和c++的static变量;实例变量在__init__里定义,相当于java和c++的普通变量。

    是否为类的对象,isinstance函数;是否是继承关系,issubclass函数;

    是否含有变量hasattr(x,’name’),是否有函数hasattr(x,’__name__’),所有特性用__dict__特性。

  • 相关阅读:
    Web2.0技能评测
    [收藏]流程设计和优化原则
    [读书笔记1] 卓有成效的管理者(彼得.德鲁克)
    [读书笔记3] 卓有成效的管理者聚焦贡献
    [读书笔记2] 卓有成效的管理者管理时间
    动态生成的Web软件 应该如何设计???
    Logs
    JQuery推荐插件(200+)
    Spring AOP 实例
    《JavaScript凌厉开发Ext详解与实践》一书说了些什么
  • 原文地址:https://www.cnblogs.com/houkai/p/3478779.html
Copyright © 2011-2022 走看看