返回目录

本篇索引

(1)常用内置数据类型

(2)类型检查常用方法

(3)常用内置函数

(4)程序结构的数据类型

(1)常用内置数据类型

分类 类型名称 描述
数字 int 整数
float 浮点数
complex 复数
bool 布尔值
序列 str 字符串(不可变序列)
list 列表
tuple 元组(不可变序列)
range 整数范围(不可变序列)
bytes 字节数组(不可变序列)
bytearray 可变字节数组
映射 dict 字典
集合 set 可变集合
frozenset 不可变集合
None NoneType 空对象,它没有任何属性

(2)类型检查常用方法

用法 类型 描述 举例
id(实例) 内置函数 返回一个对象的身份(整数)

id(a)

type(实例) 内置函数 返回一个对象实例的类型 type(a)
is 运算符 比较2个对象是否同一身份

a is b

type(a) is str

type(a) is type(b)   # a与b是否同一类型

isinstance(实例, 类名) 内置函数 入参对象是否是入参类的实例

isinstance(s, list) # s是否为列表

isinstance(f, Foo)  # f是否为Foo类的实例

(3)常用内置函数

名称 简述 用法 举例或说明
数学运算
abs() 返回一个数的绝对值 abs(x) abs(a)
pow() x的y次方运算,将结果对z取模 pow(x, y[,z])

pow(2,3,3) # 结果为2

round() 将x按10的负n次取四舍五入 round(x[, n=0]) 舍入规则见下详述
divmod() 将a除以b的商和余数作为元组返回 divmod(a, b)

divmod(10,3) # 结果为(3,1)

内置数据类型实例生成
int() 根据入参数字或字符串,生成整数实例 int(x[, base=10]) base默认为10, 详见下例
float() 根据入参数字或字符串,生成浮点数实例 float(x)

float(3) # 结果为3.0

complex() 生成复数实例 complex(r[, i]) 较少用到
bool() 生成布尔值实例 bool([x]) 不带入参时默认返回False
list() 生成列表实例 list([iter]) iter须是可迭代对象
dict() 生成字典实例 dict([m]) 详见下述
tuple() 生成元组实例 tuple([iter]) iter须是可迭代对象
str() 生成字符串实例 str([object]) 入参object的__str__方法
range() 创建range实例

range(stop)

range(start, stop [,step])

range对象可以用迭代、也可用切片访问
set() 生成集合实例 set([iter]) iter须是可迭代对象
frozenset() 生成不可变集合实例 frozenset([iter]) iter须是可迭代对象
slice() 生成切片对象

slice(stop)

slice(start, stop [,step])

较少直接使用

bytes() 生成不可变字节数组实例 bytes([source [,encoding [,errors]]]) 详见下述
bytearray() 生成可变字节数组实例 bytearray([source [,encoding [,errors]]]) 用法同上,内容可变
memoryview() 生成memoryview实例 memoryview(obj) 较少用到
object() 生成一个基类实例 object() 较少用到
编码与解码
hex() 将数值x用16进制字符串表示 hex(x)

hex(16) # 结果为'0x10'

oct() 将数值x用8进制字符串表示 oct(x)

oct(16) # 结果为'0o20'

bin() 将数值x用2进制字符串表示 bin(x)

bin(8) # 结果为'0b1000'

ord() 将单字符转换成utf-8数值 ord(c)

ord('a') # 结果为97

ord('数') # 结果为25968

chr() 将数值x转换成单字符字符串 chr(x)

chr(97) # 结果为'a'

chr(25968) # 结果为'数'

ascii() 像repr()那样显示对象,非ASCII字符显示为转义序列 ascii(object) 较少用到
序列操作
len() 返回s中包含的项数 len(s) s可以是:列表、元组、字符串、集合、字典
min() 如果只有1个参数s,返回s中各项的最小值。如果有多个参数,返回各个参数中的最小值。 min(s[, args, ...])

s可以是可迭代对象

min([1,3,5]) # 结果为1

min(1,3,5,7) # 结果为1

max() 如果只有1个参数s,返回s中各项的最大值。如果有多个参数,返回各个参数中的最大值。 max(s[, args, ...])

s可以是可迭代对象

min([1,3,5]) # 结果为5

min(1,3,5,7) # 结果为7

sum() 计算可迭代对象iter中所有项的和,initial为累加初始值,默认为0。只能用于数值计算。 sum(iter[ ,initial])

sum([1,2,3]) # 结果为6

sum([1,2,3], 10) # 结果为16

迭代操作
all() 若可迭代对象iterable中的所有值都为True,则返回True。 all(iter)

all([0,1,2,3]) # 结果为False

any() 若可迭代对象iterable中的任意值为True,则返回True。 any(iter)

any([0,1,2,3]) # 结果为True

enumerate() 根据入参迭代器,产生一个新迭代器,其中每个元素为一个元组:内含一个计数值和原迭代出的值。 enumerate(iter[ ,start=0])

for i,x in enumerate(['a','b'])

pass

# 结果迭代出(0,'a'), (1,'b')

zip() 产生一个新迭代器,第n个元素为一个(s1[n], s2[n], ...)的元组,其长度为最短的一个迭代器长度。 zip([s1 [, s2 [, ...]]])

a = [1,2,3]

b = ['x','y']

for t in zip(a, b)

pass

# 迭代结果为(1,'x'), (2,'y')

sorted() 根据入参迭代器的内容排序,创建有序列表 sorted(iter, *, key=None, reverse=False) 详见下述
reversed() 产生一个迭代器,将入参序列的所有元素位置颠倒(注意:跟sorted()完全不同) reversed(seq)

for x in reversed([1,2,'a']):

pass

# 迭代结果为 'a', 2, 1

filter() 产生一个迭代器,其内容是对入参iter中的每个元素使用func函数进行过滤,只有func返回True的才被加入新迭代器。 filter(func, iter)

a = [1,2,3,4,5,6,7,8]

filter(lambda x:x%2==1, a)

# 迭代器中内容为 1,3,5,7

map() 产生一个迭代器,其每一项是将函数func应用到iter中的每一项返回的结果。若入参有多个iter迭代器,则相应的函数func应有多个入参。 map(func, iter, ...)

map(lambda x:x*2, [1,3,5,7])

# 迭代器中内容为 2,6,10,14

iter() 返回一个可生成object中各项的迭代器。 iter(object[ ,sentinel])

较少直接使用

next() 返回迭代器iter中的下一项。 next(iter[ ,default])

较少直接使用

对象实例操作
id() 返回object的唯一整数标识符(这是一个内存位置)。 id(object)

结果为一个整数,较少直接使用

type() 当单参数调用时,返回入参object的类型。当三参数调用时,创建一个新type对象(一般用于元类)。

type(object)

type(name, bases, dict)

type(1) # 结果为<class 'int'>

type('a') # 结果为<class 'str'>

isinstance() 如果object是clsinfo类的一个实例,则返回True。clsinfo可以是一个含多个类的元组。 isinstance(object, clsinfo)

# 设有一个名为Foo的自定义类

f = Foo()

isinstance(f, Foo) # True

isinstance(f, (Foo,list)) # True

isinstance([1,2], (Foo,list)) # True

isinstance(f, (list,tuple) # False

repr() 返回object的字符串表示形式。 repr(object) 一般在类内部的__repr__()方法会定义本对象的字符串表示形式。
dir() 返回object对象的属性名(含方法名)列表,若object是一个模块,则返回其内部定义的符号列表。 dir(object) 如果类内部定义了__dir__属性,则返回此值。
hasattr() 若name是object的属性名,则返回True hasattr(object, name)

入参name是一个字符串

getattr() 返回对象的name属性的值,若无此属性,则default是可选的返回值,否则引起AttributeError。 getattr(object, name [,default])

a = getattr(obj, 'p1')

# 效果同 a = obj.p1

setattr() 设置对象的属性 setattr(object, name, value)

setattr(obj, 'p1', a)

# 效果同 obj.p1 = a

delattr() 删除对象的属性 delattr(object, name)

delattr(obj, 'p1')

# 效果同 del obj.p1

hash() 返回对象的整数散列值。一般可变对象不会定义散列值,除非类内部定义了__hash__()方法。 hash()

hash('abc') # 结果为526986374

hash(3.14)  # 结果为1846836513

callable() 检查一个对象是否是可调用的。但有时即便返回 True,object 仍然可能调用失败。 callable(object) 对于函数、方法、lamdba表达式、类、实现了__call__()方法的类实例,它都返回True。
类操作
staticmethod() 创建在类中使用的静态方法。 staticmethod(func) 一般通过@staticmethod装饰器隐式调用该函数
classmethod() 创建在类方法。 classmethod(func) 一般通过@classmethod装饰器隐式调用该函数
issubclass() 如果class是clsinfo的子类,或class是基于抽象基类clsinfo注册的,则返回True。clsinfo可以是一个含多个类的元组。 issubclass(class, clsinfo)

issubclass(Foo, BaseFoo) # 结果为 True

issubclass(Foo, (BaseFoo,list) # 结果为 True

super()

返回一个代理对象,提供可以调用基类中的方法的手段。type是当前子类名,object一般是self。

在Python3中,在子类方法中可以省略type和object参数,直接简写成:super()

super(type [,object])

class B(A):

def foo(self):

# 调用基类A的foo方法

super(B,self).foo()

# 在Python3中可简写成:

# super().foo()

property() 创建一个虚拟属性。fget, fset, fdel分别为自定义的属性读取、设置、删除方法,doc为文档字符串。 property(fget=None, fset=None, fdel=None, doc=None)

class C:

def __init__(self):

self._x = 'c'

def gx(self):

return self._x

x=property(fget=gx, doc='a')

# 定义了一个只读的属性x

域操作
globals() 返回代表当前全局作用域的所有符号的字典。 globals()

globals()

locals() 返回代表当前局部作用域的所有符号的字典。 locals()

locals()

vars() 返回object的所有属性和属性值的字典对象,如果没有入参,则相当于调用locals() vars([object])

vars(obj)

输入输出与文件操作
input() 显示prompt提示信息,并读取一行输入,将读入内容不作任何修改作为字符串返回。(Python3中取消了原raw_input()函数) input([prompt])

>>> input('pls ipt:')

pls ipt:123

# 返回结果为:'123'

旧版raw_input用法

print() 打印一系列值到屏幕上。入参中可设置:多个显示对象之间的分隔符、换行符、输出设备、强制刷新等,一般不用修改。 print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

一般用于调试用

open() 打开文件并返回一个新文件对象。 open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

在文件操作章节详细描述

杂项
eval() 计算入参表达式的值并返回结果。expr是一个字符串或代码对象。globals和locals参数可指定操作时的全局和局部命名空间映射对象。 eval(expr, globals=None, locals=None)

x = 1

y = eval('x+1') # 结果为2

更详细说明

exec() 执行Python语句,入参code可以是字符串、文件或代码对象。globals和locals参数可指定操作时的全局和局部命名空间映射对象。 exec(code[, globals[, locals]])

x = 1

code = """s = x + 1

print(s)"""

exec(code) # 结果为2

exec(code, {'x':10}) # 结果为11

更详细说明

format() 按照format_spec中的格式将value转换为有格式的字符串,该操作调用value.__format__()方法。 format(value[, format_spec])

一般在格式化字符串时被隐式调用

help() 调用内置的帮助系统。object可以是字符串(表示模块名、类名、函数名、方法名、关键字、文档主题名称),如果是其他类型的对象,则会出现与该对象有关的帮助界面。 help([object])

help('math')

compile() 将source对象编译为代码对象,结果可被用于eval()和exec()函数。 compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)

若不是开发框架的话,一般用不到

breakpoint() Python3.7中新增的内置函数,用来设置程序运行时的断点,程序运行到该函数时自动进入调试器。这是个方便函数,可以让你很方便地进入Pdb调试器(不用再显式导入调试模块等)。 breakpoint(*args, **kwargs) 在需要设置断点的地方直接调用breakpoint()即可

● round(x[, n])

说明:

在Python3中,当被舍入数字为5且为第1位小数时,舍入规则如下:若被舍入数字的前一个数为偶数,则朝0方向进行四舍五入;否则远离0,正负数都遵循这个规则。其它位的四舍五入不适用此规则,依旧按照普通数学规则进行。

举例:

>>> round(2.5)  # 结果为2
>>> round(-2.5) # 结果为2
>>> round(3.5)  # 结果为4
>>> round(-3.5) # 结果为4

返回索引

● int(x[, base])

说明:

x可以是数字或字符串,base是入参的转换进制基数,可以是2、8、16、16等,转换结果总是10进制整数。

举例:

>>>  int('100') # 结果为100
>>> int('100', 10) # 结果为100
>>> int('100', 16) # 结果为256
>>> int('100', 2) # 结果为4

返回索引

● dict([m])

说明:

入参m若是字典,则dict(m)就创建一个m浅复制。若m不是字典,则必须能够产生(key, value)形式的迭代值。也可用关键字创建字典,见下例。

举例:

>>>  dict('a'=1, 'b'=2) # 结果为{'a':1, 'b':2}
>>> dict() # 结果为空字典{}

返回索引

● bytes([source [,encoding [,errors]]])

说明:

生成不变字节数组,入参source为原始输入字符串,入参encoding指定要使用的字符编码方式。

举例:

>>> x = bytes()   # 结果为空字节数组 b''
>>> x = b''  # 结果同上
>>> x = bytes('abc')  # 结果为 b'abc'
>>> x = bytes('ab数字', 'utf-8')  # 结果为 b'ab\xe6\x95\xb0\xe5\xad\x97'

返回索引

● sorted(iter, *, key=None, reverse=False)

说明:

根据iter迭代器中的各项值的内容进行排序(从小到大),创建有序列表,一般只能对数字或字符串进行排序。key是个单参数函数,可以对元素在被排序前进行预处理,将一些常规来说不能排序的元素预处理成可排序的数字或字符串。reverse是个标志位,用以指出是否逆序(从大到小)排序。(注意:Python3最新版本中已废除了cmp参数)

举例:

>>>  sorted([1,7,3,5])  # 结果为[1,3,5,7]
>>> sorted([1,7,3,5], reverse=True)  # 结果为[7,5,3,1]
>>> sorted(['c','b','a']) # 结果为['a','b','c']
>>> sorted([('b',2),('a',1)], key=lambda x:x[1]) # 结果为[('a',1),('b',2)]
>>> # 上例说明:入参列表中的元素为元组,一般不能排序。但这里用lambda生成了一个匿名函数,对元素进行预处理,取出每个元素元组中的数字,然后用这个数字作为排序依据,给sorted()函数进行排序

返回索引

● 旧版raw_input()用法

说明:

在Python3中的input()函数相当于Python2中的raw_input()函数。而在Python2中的input()函数中,用户在输入字符串内容时必须带上引号,否则会报错(非字符串类型则不需要引号)。所以在Python2中,一般尽量使用raw_input()函数。

举例:

x = input('x:')  # 用户必须输入带引号的字符串:'abc',否则会报错
x = raw_input('x:')  # 用户可以直接输入:abc,系统会自动将其转换为字符串

返回索引

● eval(expr, globals=None, locals=None)

说明:

eval()计算字符串形式的表达式或代码对象expr,并返回计算结果。其中globals和locals参数可指定操作时的全局和局部命名空间,如果省略,就使用当前实际的全局和局部命名空间中的值。

举例:

# 例1:
x = eval(input('Enter an expression:'))  # 用户若输入:1+2*3,返回值为7 # 例2:
scope = {'x':2, 'y':3}
eval('x+y', scope)  # 相当于在scope命名空间中运行eval(),结果为5

返回索引

● exec(code[, globals[, locals]])

说明:

exec在Python2中是一个语句,exec()在Python3中是内置函数,exec()最有用的地方在于可以动态地创建代码字符串。其中globals和locals参数可指定操作时的全局和局部命名空间,如果省略,就使用当前实际的全局和局部命名空间中的值。

由于每次执行exec()或eval()时,Python都要编译一次入参字符串,这个比较耗资源。如果某个代码字符串要反复执行多次,最好是先编译代码,然后在后续的调用中使用编译过的code对象。详见后面的例子。

举例:

# 例1:
x = 1
scope = {}
exec('x=2', scope)  # 在命名空间scope中运行赋值语句,所以x仅在scope范围为2,在实际的全局空间中仍为1 # 例2:
s = 'for i in range(100): print(i)'
code = compile(s, '', 'exec')  # 将要执行的字符串代码先进行编译
exec(code)  # 执行刚才已编译过的代码

返回索引

● future_builtins

在Python2中,如果使用 future_builtins 模块,可以使用以下内置函数:

函数 说明
ascii(object) 产生的输出与 repr() 相同。
hex(object) 创建十六进制字符串,但使用__index__()特殊方法来得到整数值, 而不是调用__hex__()
otc(object) 创建八进制字符串,但使用__index__()特殊方法来得到整数值, 而不是调用__oct__()
filter(function, iterable) 创建迭代器而不是列表,等同于 itertools.ifilter()。
map(function, iterable, ...) 创建迭代器而不是列表,等同于itertools.imap()。
zip(iter1, iter2, ...) 创建迭代器而不是列表,等同于itertools.izip()。

(4)程序结构的数据类型

在Python中,函数、类、方法、模块等等都可以当作数据操作的对象,下表为表示程序本身各种元素的类型。

分类 类型名称 描述
可调用 types.BuiltinFunctionType 内置函数或方法
types.FunctionType 用于定义的函数(包括lambda匿名函数)
types.MethodType 类中定义的方法
type 因为类本身也是可以被调用的,所以这里也列一下。
object 因为类本身也是可以被调用的,所以这里也列一下。
模块 types.ModuleType 模块
类型 type 内置数据类型和类的类型
根类 object 所有类型和类的祖先

返回目录

Python语法速查: 1. 数据类型与内置函数的更多相关文章

  1. Python语法速查:目录

    1. 数据类型与内置函数 2. 列表.元组.字典.集合操作 3. 字符串格式化 4. 字符串常用操作 5. 运算符.math模块.表达式 6. 循环与迭代 7. 函数基础 8. 类与对象 9. 函数进 ...

  2. Python---基础---数据类型的内置函数

    2019-05-23 ---------------------------- 一. #数据类型的内置函数Python有哪些数据类型?Number   数值型string   字符型list     ...

  3. Python语法速查: 13. 操作系统服务

    返回目录 本篇索引 (1)sys模块 (2)os模块 (3)与Windows相关模块 (4)subprocess模块 (5)signal模块 (1)sys模块 sys模块用于Python解释器及其环境 ...

  4. Python语法速查: 12. 文件与输入输出

    返回目录 (1)文件基本操作 ● 文件常用操作 内置函数或方法 描述 open(name [,mode [,buffering]]) 内置函数.用来打开文件,返回一个文件对象(file对象).详见下述 ...

  5. Python语法速查: 7. 函数基础

    返回目录 (1)函数基本 ● 函数是第一类对象 Python中万物皆对象,所有对象都是第一类的(first class),函数也不例外,也是第一类对象.既然是对象,那就可以当作普通的对象数据处理,比如 ...

  6. Python语法速查: 5. 运算符、math模块、表达式

    返回目录 (1)一些较容易搞错的运算符 一般简单的如加减乘除之类的运算符就不写了,这里主要列些一些容易搞错或忘记的运算符.运算符不仅仅只有号,有一些英文单词如 in, and 之类,也是运算符,并不是 ...

  7. Python语法速查: 15. 常用数据结构

    返回目录 本篇索引 (1)array (2)bisect (3)deque (4)defaultdict (5)namedtuple (6)heapq (7)itertools (1)array ar ...

  8. Python语法速查: 6. 循环与迭代

    返回目录 (1)while循环与for循环 while仅能用于普通循环,而for除了可以做循环外,还可以遍历序列.集合.字典.迭代器等. 需要注意的是,在类似:for i in somelist: 的 ...

  9. Python语法速查: 2. 列表、元组、字典、集合操作

    返回目录 (1)通用序列操作 “序列”表示索引为非负整数的有序对象集合,列表.元组.字符串都属于序列.区别在于:列表是可变的,而元组和字符串是不可变的.序列的通用操作他们都可以用. 操作或方法 简述 ...

随机推荐

  1. 传统js和jsx与ts和tsx的区别

    一.从定义文件格式方面说 1.传统的开发模式可以定义js文件或者jsx文件2.利用ts开发定义的文件格式tsx二.定义state的状态来说 1.传统的方式直接在构造函数中使用 constructor( ...

  2. Git 原理简谈

    Git 本身是一个对 reference 进行管理的数据库,reference 指的是对原始数据的引用.通过对原始数据的追踪,那么就可以做到对版本的控制.Git 使用一个 DAG 存储了整个的refe ...

  3. docker-compose 部署 Vue+SpringBoot 前后端分离项目

    一.前言 本文将通过docker-compose来部署前端Vue项目到Nginx中,和运行后端SpringBoot项目 服务器基本环境: CentOS7.3 Dokcer MySQL 二.docker ...

  4. Image 缩略图

    方法一:通过调用Image对象的自带方法GetThumbnailImage()进行图片转换. /// <summary> /// 生成缩略图重载方法,返回缩略图的Image对象 /// & ...

  5. 在cnetos7上搭建mysql主从服务

    本文主要是介绍在centos上搭建mysql的主从服务器.如果没有搭建过的,可以查看我以前的博客,里面有详细的安装centos和在centos上安装mysql的说明. 一.安装从虚拟机: 1.右键—& ...

  6. Flask 特殊装饰器

    请求进入函数之前 before_request # -*- coding: utf-8 -*-   from flask import Flask, session, redirect, reques ...

  7. vmware无法安装vmware authorization&windows无法启动VMware Authorization Service服务

    在vmware安装过程中或更新时,时常遇到vmware无法安装vmware authorization&windows无法启动VMware Authorization Service服务的情况 ...

  8. 「SAP技术」A项目关联公司间退货STO流程

    [SAP技术]A项目关联公司间退货STO流程 1)创建公司间退货STO单据. 如下图示的公司间退货STO 4500000572, 2),VL10B, 创建交货单. 如下图交货单号:80044918, ...

  9. Github访问速度很慢的原因,以及解决方法

    1,CDN,Content Distribute Network,可以直译成内容分发网络,CDN解决的是如何将数据快速可靠从源站传递到用户的问题.用户获取数据时,不需要直接从源站获取,通过CDN对于数 ...

  10. git命令行的颜色配置

    Git颜色branch,diff,interactive,status配置,git终端配置颜色,git命令行高亮 Git默认的输出是单一颜色的,感觉很不容易阅读,Git支持用多种颜色来显示其输出的信息 ...