内建类型
string
string与bytes
- python3将文本数据和二进制数据做了明确的区分。文本总是使用unicode编码,以string类型表示;二进制数据以bytes类型表示
- python3中不能以任何隐式方式将string和bytes混用。不可以将string和bytes类型进行拼接,不能在string中搜索bytes数据(反之亦然),也不能将string作为参数传入需要bytes类型参数的函数(反之亦然)。
- string可以被encode()为bytes,bytes可以被decode()为string
- 使用str()直接将bytes转化为string会导致字符串带前缀b
带小数点的字符串不能直接转化为int类型,需要先转为float类型再转int类型
元组
-
命名元组
含有属性的元组,没有行为的对象
命名元组对许多只含有数据的表示来说是更好的选择,但是元组是不可变的,对于需要修改的情况下并不适用
from collections import namedtuple# namedtuple需要两个参数,第一个含有对该命名元组的标识符,# 第二个参数是一个可以用空格隔开的字符串用来指定命名元组含有的属性Stock = namedtuple('Stock', 'symbol current high low')stock = Stock('GOG', 613.30, high=625.86, low=610.50)
字典
get(key): 返回键对应的值
- setdefault(key, default_value):仅当键值不存在的时候,在字典中设置该键的值。返回键值
- keys(): 返回键的迭代器(不是列表,需要显示使用list进行转化)
- values(): 返回值的迭代器
- items(): 返回键值对构成的元组的迭代器
-
列表
-
集合
集合中可以容纳任何可哈希的对象,且每个对象只可以出现一次
- 集合必须通过set()构造或{}
-
内置函数
repr函数
-
len函数
对一个对象调用len时,该对象必须在自己的命名空间中查找该方法,并且特殊的getattribute方法(每次对象的属性或方法被调用时都要调用该函数)也被定义,那么它也会被调用,甚至可能会拒绝我们对某些特殊函数的访问。
Reversed
-
Enumerate
创建一个元组列表,每个元组的第一个对象是索引,第二个对象是原始条目内容
Zip
-
对象操作
特殊函数
repr函数
repr函数显示实例化对象的属性,当使用print显示实例化对象时,调用就是该函数
默认该函数返回当前对象的“类名+object at+内存地址”
异常处理
通过raise抛出一个异常对象
- 当一个异常抛出时,它会立即停止程序的执行,在这个异常之后应该被执行的代码都没有被执行,并且除非处理这个异常,否则程序会伴随一条错误信息退出
python中大部分异常都继承于Exception,而所有异常都继承于BaseException或其子类,其中SystemExit和KeyboardInterrupt直接继承与BaseException
property关键字,将对类属性的访问操作函数包装成对公共属性的访问和操作 ```python class Silly: def _get_silly(self):
print("You are getting silly")return self._silly
def _set_silly(self, value):
print("You are making silly {}".format(value))self._silly = value
def _del_silly(self):
print('Whoa, you killed silly!')del self._silly
silly = property(_get_silly, _set_silly, _del_silly, ‘This is a silly property’)
if name == ‘main‘: s = Silly() s.silly = ‘funny’ print(s.silly) del s.silly
- 装饰器实现property```pythonclass NewSilly:def __init__(self):self._silly = None# 通过property装饰一个方法,使其称为getter,然后再设置其setter和deleter属性@propertydef new_silly(self):print('You are getting new silly')return self._silly@new_silly.setterdef new_silly(self, value):print('You are making new silly {}'.format(value))self._silly = value@new_silly.deleterdef new_silly(self):print('Whoa, you killed new silly')del self._silly
- 属性和property属性之间的唯一区别是,在property属性被检索、赋值或者删除时可以自定义一些操作
