Python3学习(2)-中级篇
- 切片:取数组、元组中的部分元素
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个
- 前8个中每2个取1个
- 高阶函数:map/reduce/filter/sorted
- map:
map()
函数接收两个参数,一个是函数,一个是Iterable
,map
将传入的函数依次作用到序列的每个元素,并把结果作为新的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']
- map:
- 匿名函数
- 关键字
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
- type(Object):输出对象的类型。
- 对象
- 单元测试
- 用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。
- 被测试模块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)-中级篇的更多相关文章
- Python3学习(3)-高级篇
Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 文件读写 源文件test.txt line1 line2 line3 读取文件内容 f = ope ...
- Python3学习(1)-基础篇
Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 安装(MAC) 直接运行: brew install python3 输入:python3 --v ...
- Java工程师学习指南 中级篇
Java工程师学习指南 中级篇 最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我写的文章都是站 ...
- java学习笔记(中级篇)—java实现高质量图片压缩
使用java几十行代码实现一个高质量图片压缩程序,再也不用去自己找网络的压缩程序啦!而且很多网上的工具还有水印或者其他的限制,自己动手写一个简单的应用,是再合适不过了. 一.实现原理 1.声明两个字符 ...
- java学习笔记(中级篇)—JDK动态代理
一.什么是代理模式 相信大家都知道代理商这个概念,在商业中,代理商无处不在.假设你要去买东西,你不可能去找真正的厂家去买,也不可能直接跟厂家提出需求,代理商就是这中间的一桥梁,连接买家和厂商.你要买或 ...
- Java工程师学习指南(中级篇)
Java工程师学习指南 中级篇 最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我写的文章都是站 ...
- 零基础学习openstack【完整中级篇】及openstack资源汇总
1.你是如何学习openstack的?2.你对openstack的组件了解多少?3.你认为openstack该如何学习? 一直想写关于openstack的方面的内容,今天终于整理完成.算是完成一桩心事 ...
- Spark学习体系整理(基础篇、中级篇、高级篇所涉及内容)
新手刚开始学习比较迷茫,参考下面,然后找相关资料学习 1 Spark基础篇 1.1 Spark生态和安装部署 在安装过程中,理解其基本操作步骤. 安装部署 ...
- 【学习中】Unity<中级篇> Schedule
章节 内容 签到 Unity3D 实战技术第二版视频教程(中级篇) 1.游戏引擎发展史 2.Unity发展史 3.3D图形学与必要组件 5月19日 4.核心类_GameObject类 5月19日 5. ...
随机推荐
- html字符字体转换
- JavaScript笔记基础篇(一)
一. 常用正则表达式汇总以及部分问题解决方案 正则匹配: var str = "This is my test"; var test = new RegExp("test ...
- python __init__.py用途
转自http://www.cnpythoner.com/post/2.html Python中的Module是比较重要的概念.常见的情况是,事先写好一个.py文 件,在另一个文件中需要import时, ...
- [oracle] update和merge语句的几点写法
1.update t2 set parentid=(select ownerid from t1 where t1.id=t2.id); 2. update tb_client_win_lost_re ...
- python之I/O多路复用
python IO多路复用 一.多路复用概念: 监听多个描述符(文件描述符(windows下暂不支持).网络描述符)的状态,如果描述符状态改变 则会被内核修改标志位,进而被进程获取进而进行 ...
- singleTask, singleInstance使用心得
1. singleTask, singleInstance 共同点: 1) 一旦入栈,都为于栈底. 2) 全栈有且只有一个activity实例对象. 2. singleTask, singleIns ...
- 自定义控件TextView
public class defineTextView extends TextView { Context context; public defineTextView(Context contex ...
- Python学习笔记(二)基本语法
Class 2 一.交互式编程 交互式编程不需要创建脚本文件,是通过 Python 解释器的交互模式进来编写代码. linux上你只需要在命令行中输入 Python 命令即可启动交互式编程,如下图: ...
- jquery selector checkbox
$("#competencyList input:checkbox").on("click", function () { var checkedCompete ...
- VS&SQL StartUp Crash - CLR20R3
VS2013和SQL Management Studio 在启动时直接崩溃,错误提示CLR20R3,问题签名4是windowsbase, 这说明是操作系统的问题导致启动崩溃,在网上找到一些解决方案: ...