一、前言
因个人习惯,在阅读和学习文字资料时,习惯摘写笔记,因此在这里留下自己的学习记录。笔记的内容偏摘抄为主,并非自己的原创内容。
内容基于:《简明 Python 教程》Swaroop, C. H. 著沈洁元 译
二、特殊的方法
定义:有特殊含义的方法,用来模仿某个行为,例如:__init__ __del__
简单介绍:
(1)__init__(self):在新建对象恰好要返回对象前被调用
(2)__del__(self):在对象要被删除前调用
(3)__str__(self):在对象使用print语句或str()函数时调用
(4)__lt__(self,other):在使用‘<’运算符时调用(相应的其他运算符也有对应的方法)
(5)__getitem__(self,key):在使用x[key]索引操作符时调用
(6)__len__(self):在使用len()函数时调用
自定义对象支持索引操作:
在定义的类中实现__getitem__(self)方法即可,因为python的序列类也是这样实现的。
三、单语句块
一般来说,语句块的区分是通过缩进的层次来区分的,但并非一定准确。
因为当语句块只有一条语句时,条件语句和循环语句等支持语句块写在同一逻辑行,但不推荐该编码风格。
四、列表综合
作用:从一个已有的列表导出一个新的列表。(原有列表对象无影响)
例子:把列表中大于2的数增大为原来的2倍,并生成一个新的列表
listone = [1,2,3,4]
listtwo =[2*i for i in listone if i>2]
其中 2*i为操作语句,即循环体;for i in listone 为循环语句;if i>2 为循环满足条件
五、函数中接收元组和列表
当函数接收的的参数为元组或字典时,使用*和**为前缀的的特殊方法对获取可变数量的参数特别有用。
使用*时,调用函数时,多余的参数会自动称为元组的一部分;
使用**时,调用函数时,多余的参数会自动称为字典的键/值对
六、lambda形式
作用:创建新的函数对象,并且在运行时返回它们。
lambda形式中,只能使用表达式。
当我们使用lambda形式新建对象时,返回的对象为表达式的值,其中lambda本质上需要有一个参数。
make_repeater():函数用于在yu运行时创建对象
例子:
def make_repeater(n):
return lambda s: s*n
twice = make_repeater(2)
print (twice('world'))
print (twice('5'))
结果为:
worldworld
10
七、exec、eval、assert语句
exec:用来执行存储在字符串中的python语句,例子 exec("print ('hello world')")
eval:用来执行存储在字符串中的有效表达式。例子 eval('2*3')
assert:用于声明某个条件是真的。指定某个条件是真的,非真时引发异常。assert len(list)>2
八、repr函数
作用:用来取得对象的规范字符串表示(反引号,即转换符,可完成功能)
repr(),即把对象以字符串形式输出,类似java中的toString()。例子 repr(对象名)
我们可以定义类的__repr__函数控制对象被repr()函数调用时返回的内容