• 切片:取数组、元组中的部分元素

    •  L=['Jack','Mick','Leon','Jane','Aiden']
    • 取前三个:使用索引
    • 取2-4个元素:索引
    • 取最后2个元素:索引,倒序
    • 取前3个元素:索引
  • N=[0,1,2,3,4,5,6,7,8,9]
    • 前8个中每2个取1个

    • 每3个中取1个
  • 高阶函数:map/reduce/filter/sorted
    • map:map()函数接收两个参数,一个是函数,一个是Iterablemap将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。

      • >>> def f(x):
        ... return x*x
        ...
        >>> r = map(f,[0,1,2,3,4,5,6,7,8,9])
        >>> list(r)
        [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
    • reduce:reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算
    • >>> from functools import reduce
      >>> def add(x,y):
      ... return x+y
      ...
      >>> reduce(add,[1,3,5,7,9])
      25
    • filter:filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
    • >>> def is_odd(n):
      ... return n % 2 == 1
      ...
      >>> list(filter(is_odd,[1,2,4,5,6,9,10,15]))
      [1, 5, 9, 15]
    • sorted:接收一个key函数来实现自定义的排序,例如按绝对值大小排序
    • >>> sorted([36,5,-12,9,-21],key=abs)    #按abs的结果升序排列
      [5, 9, -12, -21, 36]
      >>> sorted(['BOB','aBOUT','zoo','Credit'])    #按首字母的ASICC码
      ['BOB', 'Credit', 'aBOUT', 'zoo']
  • 匿名函数
    • 关键字lambda表示匿名函数,冒号前面的x表示函数参数
    • 只能有一个表达式,不用写return,返回值就是该表达式的结果
    • >>> f = lambda x:x*x
      >>> f(5)
      25
  • 面向对象
    • 对象

      • 万物皆为对象
      • 所有事物均可封装为对象
    •  #定义一个Student的对象
      class Student(Object):
      #初始化对象的属性
      def __init__(self,name,score):
      self.name = name
      self.score = score #定义一个对象的方法print_score
      def print_score(self):
      print('%s: %s'%(self.name,self.score))
    • 访问限制
      • 属性前加'__'(双下划线)表示私有的属性,仅可内部访问,外部无法访问
      •  #定义一个Student的对象
        class Student(Object):
        #初始化对象的属性
        def __init__(self,name,score):
        #私有属性
        self.__name = name
        self.__score = score #定义一个对象的函数print_score
        def print_score(self):
        print('%s: %s'%(self.__name,self.__score))
    • 继承和多态
      • 继承:儿子会直接继承父亲的属性
      • 多态:可重写父类的方法
    • 获取对象信息
      • type(Object):输出对象的类型。

        • >>> a='AAA'
          >>> type(a)
          <class 'str'>
      • isinstance(Object,Type):判断对象的类型
        • >>> isinstance('a',str)
          True
          >>> isinstance(123,int)
          True
          >>> isinstance(123,str)
          False
      • dir(Object):显示对象的所有属性和方法
        • >>> dir('a')
          ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
      • 实例属性和类方法
        • >>> class Student(object):
          ... name = 'Student'
          ...
          >>> s = Student()
          >>> print(s.name)
          Student
          >>> print(Student.name)
          Student
          >>> s.name = 'Jack'
          >>> print(s.name)
          Jack
          >>> print(Student.name)
          Student
  • 单元测试
    • 用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。
    • 被测试模块mydict.py
      •  class Dict(dict):
        
             def __init__(self,**kw):
        super().__init__(**kw) def __getattr__(self,key):
        try:
        return self[key]
        except KeyError:
        raise AttributeError(r"'Dict' object has no attribute %s" %key) def __setattr__(self,key,value):
        self[key] = value
    • 测试模块TestDict.py
      •  import unittest
        
         from mydict import Dict
        
         class TestDict(unittest.TestCase):
        
             def test_init(self):
        #完成数据初始化
        d = Dict(a=1,b='test')
        #判断d.a是否为1,为1则PASS,否则FAIL
        self.assertEqual(d.a,1)
        #判断d.b是否为'test'
        self.assertEqual(d.b,'test')
        self.assertTrue(isinstance(d,dict)) if __name__ == '__main__':
        unittest.main()
    • 执行及结果:仅测试一个方法test_init(),且执行通过
      • ➜  Python  python3 TestDict.py
        .
        ----------------------------------------------------------------------
        Ran 1 test in 0.000s OK
    • 说明
      • 测试模块需要继承unittest.TestCase
      • 测试方法命名需要以test开头
      • 使用断言来测试结果
      • setUp():在测试模块执行前,执行的方法
      • tearDown():在测试模块执行结束后,执行的方法

Python3学习(2)-中级篇的更多相关文章

  1. Python3学习(3)-高级篇

    Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 文件读写 源文件test.txt line1 line2 line3 读取文件内容 f = ope ...

  2. Python3学习(1)-基础篇

    Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 安装(MAC) 直接运行: brew install python3 输入:python3 --v ...

  3. Java工程师学习指南 中级篇

    Java工程师学习指南 中级篇 最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我写的文章都是站 ...

  4. java学习笔记(中级篇)—java实现高质量图片压缩

    使用java几十行代码实现一个高质量图片压缩程序,再也不用去自己找网络的压缩程序啦!而且很多网上的工具还有水印或者其他的限制,自己动手写一个简单的应用,是再合适不过了. 一.实现原理 1.声明两个字符 ...

  5. java学习笔记(中级篇)—JDK动态代理

    一.什么是代理模式 相信大家都知道代理商这个概念,在商业中,代理商无处不在.假设你要去买东西,你不可能去找真正的厂家去买,也不可能直接跟厂家提出需求,代理商就是这中间的一桥梁,连接买家和厂商.你要买或 ...

  6. Java工程师学习指南(中级篇)

    Java工程师学习指南 中级篇 最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我写的文章都是站 ...

  7. 零基础学习openstack【完整中级篇】及openstack资源汇总

    1.你是如何学习openstack的?2.你对openstack的组件了解多少?3.你认为openstack该如何学习? 一直想写关于openstack的方面的内容,今天终于整理完成.算是完成一桩心事 ...

  8. Spark学习体系整理(基础篇、中级篇、高级篇所涉及内容)

    新手刚开始学习比较迷茫,参考下面,然后找相关资料学习 1 Spark基础篇      1.1 Spark生态和安装部署          在安装过程中,理解其基本操作步骤.          安装部署 ...

  9. 【学习中】Unity<中级篇> Schedule

    章节 内容 签到 Unity3D 实战技术第二版视频教程(中级篇) 1.游戏引擎发展史 2.Unity发展史 3.3D图形学与必要组件 5月19日 4.核心类_GameObject类 5月19日 5. ...

随机推荐

  1. 埃及分数-IDA*

    Description 在古埃及,人们使用单位分数的和(形如1/a的, a是自然数)表示一切有理数.如:2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为加数中有相同的.对于一个分数a/b, ...

  2. Python函数中的参数(二)

    当使用混合特定的参数匹配模型时,Python将会遵循以下有关顺序的法则: 1.在函数调用中,参数必须以这样的顺序出现:任何位置参数(Value).任何关键字参数(name = Value)和*sequ ...

  3. MySQL计算销售员昨日各指标综合得分_20161206

    数据需求如上,新增重激活以15天未下单为界定 SELECT d.销售员,(日销售额得分*0.6+日新增客户数得分*0.15+日客单价得分*0.1+日客户平均产品数得分*0.15)AS 综合得分,日销售 ...

  4. 设置表格td宽度

      CSS布局,表格宽度不听使唤的实例.想把表格第一例宽度设为20,其他自适应.但CSS中宽度是等宽的.只设这一行也不起作用.但是在实际应用中总是等宽处理,并不按照样式来走. XML/HTML代码 & ...

  5. 7.29 H5学习笔记

    常用实体字符小于号  < 大于号  > 和号  & 引号  " 撇号  &apos; 分  ¢ 镑  £ 日元  ¥ 欧元  € 小节  § 版权  © 注册  ...

  6. VC++ 在控件上写字时 字体的设置技巧

    //人物照片下方的文字 CFont* nFont = &afxGlobalData.fontRegular; CFont* oFont = pDc->SelectObject(nFont ...

  7. eval()与jQuery.parseJSON()的差别以及常见的解析缺少分号的问题

    在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象 http://blog.163.com/wujicaiguai%40126/blog/static/1701715 ...

  8. java自带BASE64工具进行图片和字符串转换

    java自带BASE64工具进行图片和字符串转换 import java.io.File; import java.io.FileInputStream; import java.io.FileOut ...

  9. jdk1.6 反射性能对比

    ReflectPerformance.java package aaa.bbb.ccc; import java.lang.reflect.Method; public class ReflectPe ...

  10. 【iOS问题】The file “XXX.app” couldn’t be opened because you don’t have permission to view it.

    当引入第三方的框架的时候 容易产生以下问题: The file "XXX.app" couldn't be opened because you don't have permis ...