十进制转换为十六进制:
十进制整数对应的ASCII字符
查看某个ASCII字符
对应的十进制数
所有元素都为真,返回 True
,否则为False
至少有一个元素为真返回True
,否则False
创建函数对象的list,根据想要调用的index,方便统一调用。
第三个参数为负时,表示从第一个参数开始递减,终止到第二个参数(不包括此边界)
python五类参数:位置参数,关键字参数,默认参数,可变位置或关键字参数的使用。
默认参数c
不能位于可变关键字参数d
后.
可变位置参数b
实参后被解析为元组(2,5)
;而c取得默认值10; d被解析为字典.
既可以f(1),也可以f(a=1) 其可读性比第一种更好,建议使用f(a=1)。如果要强制使用f(a=1),需要在前面添加一个星号:
说明前面的*
发挥作用,它变为只能传入关键字参数,那么如何查看这个参数的类型呢?借助python的inspect
模块:
可看到参数a
的类型为KEYWORD_ONLY
,也就是仅仅为关键字参数。
可以看到参数a
既可以是位置参数也可是关键字参数。
生成关于蛋糕的序列cake1:
你看,我们使用同一种切法,分别切开两个蛋糕cake1,cake2. 后来发现这种切法极为经典
,又拿它去切更多的容器对象。
那么,为什么不把这种切法封装为一个对象呢?于是就有了slice对象。
定义slice对象极为简单,如把上面的切法定义成slice对象:
对于逆向序列切片,slice
对象一样可行:
频繁使用同一切片的操作可使用slice对象抽出来,复用的同时还能提高代码可读性。
有些读者反映,lambda
函数不太会用,问我能不能解释一下。
比如,下面求这个 lambda
函数:
lambda
函数有返回值吗?如果有,返回值是多少?
调用上面函数,求出以下三个最长的列表:
程序完整运行过程,动画演示如下:
*lists
,也就是 tuple
的一个元素。
lambda
函数返回值,等于lambda v
冒号后表达式的返回值。
创建一个不可修改的集合。
因为不可修改,所以没有像set
那样的add
和pop
方法
返回一个set对象,集合内不允许有重复元素:
tuple()
将对象转为一个不可变的序列类型
调用对象的 __repr__
方法,获得该方法的返回值,如下例子返回值为字符串
classmethod
装饰器对应的函数不需要实例化,不需要 self
参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。
不带参数时返回当前范围
内的变量、方法和定义的类型列表;带参数时返回参数
的属性,方法列表。
返回 property 属性,典型的用法:
使用python装饰器,实现与上完全一样的效果代码:
传入一个参数时,返回 object 的类型:
Python 定义类的常见方法,使用关键字 class
问题在于,Student
类有 __class__
属性,如果有,返回的又是什么?
哇,程序没报错,返回 type
那么,我们不妨猜测:Student
类,类型就是 type
换句话说,Student
类就是一个对象,它的类型就是 type
所以,Python 中一切皆对象,类也是对象
按照此逻辑延伸,描述元类的类被称为:元元类,开玩笑了~ 描述元类的类也被称为元类。
聪明的朋友会问了,既然 Student
类可创建实例,那么 type
类可创建实例吗?如果能,它创建的实例就叫:类 了。你们真聪明!
说对了,type
类一定能创建实例,比如 Student
类了。
元类,确实使用不是那么多,也许先了解这些,就能应付一些场合。就连 Python 界的领袖 Tim Peters
都说:
“元类就是深度的魔法,99%的用户应该根本不必为此操心。
返回一个可以枚举的对象,该对象的next()方法将返回一个元组。
在函数中设定过滤条件,迭代元素,保留返回值为True
的元素:
返回对象的哈希值,值得注意的是自定义的实例都是可哈希的,list
, dict
, set
等可变对象都是不可哈希的(unhashable)
创建一个聚合了来自每个可迭代对象中的元素的迭代器:
对象序列化,是指将内存中的对象转化为可存储或传输的过程。很多场景,直接一个类对象,传输不方便。
但是,当对象序列化后,就会更加方便,因为约定俗成的,接口间的调用或者发起的 web 请求,一般使用 json 串传输。
实际使用中,一般对类对象序列化。先创建一个 Student 类型,并创建两个实例。
生成的文件内容,如下:
python基础教程第三版源代码 python基础教程第三版源代码