PythonMan(十)

Hello Python :)

内置函数(BIF):
  issubclass(class , classinfo)
    a)一个类可以被认为是自己的子类
    b)classinfo可以是一个有类对象组成的元组,只要class与其任意一个候选类有继承关系,则返回True,否则False

  isinstance(object , classinfo)
    a)如果第一个参数不是对象。则永远False
    b)第二个不是类或者类组成的元组,也是永远False

  hasattr(object , name)
    检测一个对象里面是否有指定的属性,name要用字符串,即引号包裹一下

  getattr(object , name[,default])
    ...

  setattr(object , name , value)
    ...

  delattr(object , name)
    ...

  property()
    通过属性来设置属性,比较变态的BIF
      class Test:
        def __init__(self ,size = 10):
          self.size = size
        def getSize(self):
          return self.size
        def setSize(self , value):
          self.size = value
        def delSize(self):
          del self.size
        x = property(getSize , setSize , delSize)
        

      test = Test()
      test.x #获取size的值
      test.x = 15 #通过x设置size的值
      del test.x #通过x来删除size的值

    综上,这个property函数依次传入get,set,del参数,并且返回一个属性,通过这个返回的属性可以操控这个类中的属性。
      用法:
        Test类慢慢复杂起来了,要进行大改(比如改函数名字),那这样提供给user的名字就要更改,这样就很不好,那这时候property函数就有了很大用途。

构造和析构:
  构造:__init__(self[,...]) 、 __new__(cls[,...])
    Python在实例化一个对象时,第一时间是调用__new__()这个方法,第一个参数是类,后面如果有参数的话,这些参数会原封不动的传递给__init__()。一般来说这个方法我们没有重写的必要,但在有些特定场合下,需要对它进行重写,比如:我们继承了一个不可改变的类,又要进行更改的时候。例子:
      class CapStr(str):
        def __new__(cls,string):
          string = string.upper()
          return str.__new__(cls,string)

      a = CapStr("kepler")
      print(a)
      #输出KEPLER

析构:__del__(self)
  当对象被垃圾回收器回收时,会调用这个方法。
  细节:del x 不等于 x.__del__()

魔法方法:__str__()、__repr__():

  class A:
    def __str__(self):
      return "Kepler"
  a = A()
  print(a) #输出Kepler

  class B:
    def __repr__(self):
      return "Kepler"

  b = B()
  b #输出Kepler

计时器代码:
  细节:要引入Time模块 以下代码是import Time as t

迭代:
  每次从容器中拿出一个数据,这就是迭代,for语句可以触发迭代功能,字典、文件、字符串都是支持迭代功能的。

    iter()、next()
      string = "Kepler"
      it = iter(string)
      next(it)
      #返回K

    所以,for的工作原理:
      string = "Kepler"
      it = iter(string)
      while:
        try:
          each = next(it)
        except StopIteration:
          break
        print(each)

  想要自定义的类实现迭代,就要实现__iter__() , __next__():
    实现斐波那契数列:
      class Fibs:
        def __init__(self):
          self.a = 0
          self.b = 1

        def __iter__(self):
          return self

        def __next__(self):
          self.a , self.b = self.b , self.a + self.b
          return self.a

      test = Fibs()
        for data in test:
          if data < 100 :
            print(each)
          else:
            break

      #这样就会输出100以内的斐波那契数列

生成器:yield,是特殊的迭代器
   yield使得Python的协同程序得以实现,所谓协同程序:可以运行的独立函数调用,函数可以暂停或者挂起,并在需要的时候从程序离开的地方继续或者重新开始
    案例代码:
      def myGen():
        print("Begin")
        yield 1
        yield 2

      >>> my = myGen()
      >>> next(my)
      Begin
      1
      >>> next(my)
      2
      >>> next(my)
      Traceback (most recent call last):
      File "<pyshell#8>", line 1, in <module>
      next(my)
      StopIteration

列表推导式:
    >>> a = [data for data in range(10)]
    >>> a
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

字典推导式:
    >>> dic = {i : i % 2 == 0 for i in range(10)}
    >>> dic
    {0: True, 1: False, 2: True, 3: False, 4: True, 5: False, 6: True, 7: False, 8: True, 9: False}

集合推导式:
  ...

细节:注意没有字符串推导式:)

时间: 2024-11-14 05:30:12

PythonMan(十)的相关文章

2017黑科技趋势最具看点的十大新品

腾讯数码讯(Human)作为一年一度的全球消费电子市场风向标,今年同样在拉斯维加斯举办的CES 2017消费电子展,依然吸引了一大批全球各个领域的厂商参展,从科技巨头到初创小团队.从传统汽车厂商再到家电企业,似乎所有能与科技沾边的公司都希望能在CES 2017上好好展示一次自己的风采. 其实每年的CES都有一些明星产品给我们留下深刻的印象,今年的也不例外.而这些明星产品不仅仅只是单单一款产品,更是代表了各自行业在进入到2017年之后的一个发展趋势和方向.而就将这样的变化能否成为未来的主流.或只是

第三百二十三节,web爬虫,scrapy模块以及相关依赖模块安装

第三百二十三节,web爬虫,scrapy模块以及相关依赖模块安装 当前环境python3.5 ,windows10系统 Linux系统安装 在线安装,会自动安装scrapy模块以及相关依赖模块 pip install Scrapy 手动源码安装,比较麻烦要自己手动安装scrapy模块以及依赖模块 安装以下模块 1.lxml-3.8.0.tar.gz (XML处理库) 2.Twisted-17.5.0.tar.bz2 (用Python编写的异步网络框架) 3.Scrapy-1.4.0.tar.gz

每周进度条(第十五周)

第十五周进度条   第十五周 所花时间 1h 代码量(行)  100 博客量(篇)  1 学到的知识 对图片的处理 在Android程序中加入图片

深度学习方法(十):卷积神经网络结构变化——Maxout Networks,Network In Network,Global Average Pooling

技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 最近接下来几篇博文会回到神经网络结构的讨论上来,前面我在"深度学习方法(五):卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning"一文中介绍了经典的CNN网络结构模型,这些可以说已经是家喻户晓的网络结构,在那一文结尾,我提到"是时候动一动卷积计算的形式了",原因是很多工作证明了,在基本的CNN卷积计算模式之外,很多简

Linux运维(十)-2016-12-9整理

也有段时间没有整理面试题目了,这几天呢,完成了2场实习生和1场校招,十分郁闷,为什么金融运维一点都不关注技术,在乎我的学校成绩,我尼玛想说,学校那么水的课程能说明什么,跟技术有一丁丁点关系吗?我学业成绩不好,就能否定我的专业岗位基础不行吗?唉,劳资想说,你如果质疑我的能力,你就问我,劳资要是被你虐倒是我算我输,学艺不精我就服,看过去有球用. 这辈子职业生涯都不想进外包和IDC这两种类型的公司,就是TM打杂的,薪资还低,关键是不厚道,比如垃圾胜蓝.这回校招那家是我之前就提到的那家,大多数人对我是认

20169217 《Linux内核原理与分析》 第十周作业

实验内容 理解Linux系统中进程调度的时机,可以在内核代码中搜索schedule()函数,看都是哪里调用了schedule(),判断我们课程内容中的总结是否准确: 使用gdb跟踪分析一个schedule()函数 ,验证您对Linux系统进程调度与进程切换过程的理解: 特别关注并仔细分析switch_to中的汇编代码,理解进程上下文的切换机制,以及与中断上下文切换的关系: Linux系统进程调度与进程切换过程 进程调度分为三种类型: 中断处理过程(包括时钟中断.I/O 中断.系统调用和异常)中,

个、十、百、千、万、亿、兆、京、垓、秭、穰、沟、涧、正、载

个.十.百.千.万.亿.兆.京.垓.秭.穰.沟.涧.正.载 他们的数值 个. 十.数字后1个0 百.数字后2个0 千.数字后3个0 万.数字后4个0 亿.数字后8个0 兆.数字后12个0 京.数字后16个0 垓.数字后20个0 秭.数字后24个0 穰.数字后28个0 沟.数字后32个0 涧.数字后36个0 正.数字后40个0 载.数字后44个0

Java进阶(三十四)Integer与int的种种比较你知道多少?

Java进阶(三十四)Integer与int的种种比较你知道多少? 前言 如果面试官问Integer与int的区别:估计大多数人只会说到两点:Ingeter是int的包装类,注意是一个类:int的初值为0,Ingeter的初值为null.但是如果面试官再问一下Integer i = 1;int ii = 1; i==ii为true还是为false?估计就有一部分人答不出来了,如果再问一下其他的,估计更多的人会头脑一片混乱.所以我对它们进行了总结,希望对大家有帮助. 首先看代码: package

一眨眼已做开发十年

2006年毕业到现在,已经做了十年开发,3年C#,7年C++,顺带5年的股票和期货交易,股指期货量化交易经验.比起当初,少了迷茫,多了务实.没有成功,只是经济和经验上比当初好了些,仍然甜蜜地拼搏在路上,因为有了美丽体贴的妻子,有了可爱的女儿,也为了父母. 过去的7年奠定了整个职业生涯的方向,金融C++.上家公司是一家做全球交易通道的公司,文化很好,福利很好.在这家公司掌握了C++,掌握了股票,期货及期权的知识,也涉及了自动化交易.几乎在绝大部分的时间,工作都是非常开心,就算私下生活中碰到不愉快的