A
abs()
返回一个数的绝对值。
如果参数是一个复数,则返回它的模。
参数可以是整数、浮点数或任何实现了 __abs__() 的对象。
all()
判断对象的值是否全为真.
如果 iterable 的所有元素均为真值(或可迭代对象为空)则返回 True 。
def all(iterable):
for element in iterable:
if not element:
return False
return True
any()
判断对象的值是否全为假.
如果 iterable 的任一元素为真值则返回 True。 如果可迭代对象为空,返回 False。
def any(iterable):
for element in iterable:
if element:
return True
return False
ascii()
返回一个字符串,表示对象的可打印形式,
与 repr() 类似,但在 repr() 返回的字符串中,
非 ASCII 字符会用 \x、\u 和 \U 进行转义。
生成的字符串类似于 Python 2 中 repr() 的返回结果。
print(ascii('haha'))
print(ascii('哈哈'))
B
bin()
将整数转变为以“0b”前缀的二进制字符串。
结果是一个合法的 Python 表达式。
如果 x 不是 Python 的 int 对象,它必须定义 __index__() 方法,以便返回整数值。
print(bin(3))
print(bin(-10))
print(format(3, '#b'), format(-3, 'b'))
print(f'{3:#b}', f'{-3:b}')
bool()
返回参数的布尔值.
当参数 x 为真时返回 True,否则返回 False。
内置 True 和 False 是类 bool 的仅有的两个实例。
bool 类是 int 类的子类,不能被子类化。
# 在 3.7 版更改: x 现在只能作为位置参数。
print(bool('x'))
print(bool())
bytearray()
返回一个新字节数组。
这个数组里的元素是可变的,
并且每个元素的值范围: 0 <= x < 256。
语法:
class bytearray([source[, encoding[, errors]]])
参数:
如果 source 为整数,则返回一个长度为 source 的初始化数组;
如果 source 为字符串,则按照指定的 encoding 将字符串转换为字节序列;
如果 source 为可迭代类型,则元素必须为[0 ,255] 中的整数;
如果 source 为与 buffer 接口一致的对象,则此对象也可以被用于初始化 bytearray。
如果没有输入任何参数,默认就是初始化数组为0个元素。
bytes()
函数返回一个新的 bytes 对象,该对象是一个 0 <= x < 256 区间内的整数不可变序列。
它是 bytearray 的不可变版本。
语法:
class bytes([source[, encoding[, errors]]])
参数:
如果 source 为整数,则返回一个长度为 source 的初始化数组;
如果 source 为字符串,则按照指定的 encoding 将字符串转换为字节序列;
如果 source 为可迭代类型,则元素必须为[0 ,255] 中的整数;
如果 source 为与 buffer 接口一致的对象,则此对象也可以被用于初始化 bytearray。
如果没有输入任何参数,默认就是初始化数组为0个元素。
a = bytes([1, 255])
print(a)
c = bytes('sasasa', 'utf8')
print(c, type(c))
d = bytes('sasasa', 'ascii')
print(d, type(d))
e = bytes()
print(e)
C
callable()
检查一个对象是否是可调用的。
如果返回 True,object 仍然可能调用失败;但如果返回 False,调用对象 object 绝对不会成功。
对于函数、方法、lambda 函式、 类以及实现了 __call__ 方法的类实例, 它都返回 True。
print(callable(0))
def add(a, b):
return a + b
print(callable(add))
class A(object):
def method(self):
return 0
print(callable(A))
a = A()
print(callable(a))
class B(object):
def __call__(self):
return 0
b = B()
print(callable(b))
chr()
用一个整数作参数,返回一个对应的字符。
返回值是当前整数对应的 ASCII 字符。
参数可以是10进制或16进制的数字,数字范围为 0 到 1,114,111 (16 进制为0x10FFFF)
print(chr(65))
print(chr(0x41))
classmethod
使用@classmethod修饰符对应的函数不需要实例化,不需要 self 参数,
但第一个参数需要是表示自身类的 cls 参数,
可以来调用类的属性,类的方法,实例化对象等。
(类的方法是默认是绑定给给对象使用的,类想要使用方法则可以通过classmethod设置,
将方法绑定给类)
class A(object):
value = 1
def func1(self):
print('func1')
@classmethod
def func2(cls):
print('func2')
print(cls.value)
cls().func1()
A.func2()
测试结果:
func2
1
func1
cmp()
用于比较2个对象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。
Python 3.X 的版本中已经没有 cmp 函数.
语法:
cmp( x, y )
参数:
x -- 数值表达式。
y -- 数值表达式。
print cmp(1, 2)
print cmp(1, 1)
print cmp(2, 1)
compile()
将一个字符串编译为字节代码。
语法:
compile(source, filename, mode[, flags[, dont_inherit]])
参数:
source -- 字符串或者AST(Abstract Syntax Trees)对象。。
filename -- 代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。
mode -- 指定编译代码的种类。可以指定为 exec, eval, single。
flags -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。。
flags和dont_inherit是用来控制编译源码时的标志
str1 = 'for i in range(0, 10): print(i)'
code1 = compile(str1, '', 'exec')
print(code1)
exec(code1)
测试结果:
0
1
...
8
9
complex()
返回值为 real + imag*1j 的复数,或将字符串或数字转换为复数。
语法:
class complex([real[, imag]])
参数:
real -- int, long, float或字符串;
imag -- int, long, float;
如果第一个形参是字符串,则它被解释为一个复数,并且函数调用时必须没有第二个形参。
第二个形参不能是字符串。每个实参都可以是任意的数值类型(包括复数)。
如果省略了 imag,则默认值为零,构造函数会像 int 和 float 一样进行数值转换。
如果两个实参都省略,则返回 0j。
返回值:
返回一个复数。
对于一个普通 Python 对象 x,complex(x) 会委托给 x.__complex__()。
如果 __complex__() 未定义则将回退至 __float__()。
如果 __float__() 未定义则将回退至 __index__()。
注意点:当从字符串转换时,字符串在 + 或 - 的周围必须不能有空格。
例如 complex('1+2j') 是合法的,但 complex('1 + 2j') 会触发 ValueError 异常。
print(complex(1, 2))
print(complex('1'))
print(complex())
print(complex('1+2j'))
print(complex('1 + 2j'))
D
delattr()
删除属性。
delattr(x, 'foobar') 相等于 del x.foobar。
语法:
delattr(object, name)
参数:
object -- 对象。
name -- 必须是对象的属性。
返回值:
None
class A(object):
x = 1
y = 2
z = 3
a = A()
print(a.x, a.y, a.z)
delattr(A, 'z')
print(a.z)
dict()
用于创建一个字典。
语法:
class dict(**kwarg)
class dict(mapping, **kwarg)
class dict(iterable, **kwarg)
参数:
**kwargs -- 关键字。
mapping -- 元素的容器,映射类型(Mapping Types)是一种关联式的容器类型,
它存储了对象与对象之间的映射关系。
iterable -- 可迭代对象。
字典(dict)是Python中唯一的映射类型,映射字典 {'a': 1, 'b': 2}
print(dict())
print(dict(k1='v1', k2='v2'))
print(dict(zip(['k1', 'k2'], ['v1', 'v2'])))
print(dict([('k1', 'v1'), ('k2', 'v2')]))
print(dict(k1=[1, 2]))
print(dict(zip(['k1'], [[1, 2], ])))
print(dict([('k1', [1, 2])]))
"""
{'k1': [1, 2]}
{'k1': [1, 2]}
{'k1': [1, 2]}
"""
dir()
函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;
带参数时,返回参数的属性、方法列表。
如果参数包含方法__dir__(),该方法将被调用。
如果参数不包含__dir__(),该方法将最大限度地收集参数信息。
语法:
dir([object])
参数:
object -- 对象、变量、类型。
返回值:
返回模块的属性列表。
print(dir())
print(dir([]))
"""
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
"""
divmod()
python divmod() 函数把除数和余数运算结果结合起来,
返回一个包含商和余数的元组(a // b 商, a % b 余数)。
在 python 2.3 版本之后不允许处理复数。
(3.6 不能用 2.7版本可以)
语法:
divmod(a, b)
参数:
a: 被除数
b: 除数
返回值:
返回一个元组(商,余数).
print(divmod(7, 2))
print(divmod(8, 2))
E
enumerate()
于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,
同时列出数据和数据下标,一般用在 for 循环当中。
Python 2.3. 以上版本可用,2.6 添加 start 参数。
语法:
enumerate(sequence, [start=0])
参数:
sequence -- 一个序列、迭代器或其他支持的迭代对象。
start -- 下标起始位置。start 默认为0
返回值:
返回 enumerate(枚举) 对象。
枚举:将对象可能存在的情况(可以说是可能的值)一一例举出来。
list1 = ['a', 'b', 'c']
print(list(enumerate(list1, start=1)))
for x,y in enumerate(list1, start=1):
print(x, y)
"""
1 a
2 b
3 c
"""
eval()
执行一个字符串表达式,并返回表达式的值。
语法:
eval(expression[, globals[, locals]])
参数:
expression -- 表达式。
globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
优先顺序:
locals > locals > 全局
三个名称空间只有一个生效,其它两个的名称空间的名称不能被使用.
返回值:
返回表达式计算结果。
print(eval('2 + 2'))
print(eval('2 * 3'))
a = 10
print(eval('a * 3'))
my_len = eval('len("123")')
print(my_len)
list1 = eval('[1, 2, 3, 4,]')
dict1 = eval("{'k1': 'v1', 'k2': 'v2'}")
tuple1 = eval('(1, 2, 3)')
print(list1, type(list1))
print(dict1, type(dict1))
print(tuple1, type(tuple1))
a = 10
b = 20
c = 30
print(eval('a + b + c'))
g = {'a': 1, 'b': 2, 'c': 3}
print(eval('a + b + c', g))
g = {'a': 1, 'b': 2, 'c': 3}
l = {'a': 11, 'b': 22, 'c': 33}
print(eval('a + b + c', g, l))
exec
执行储存在字符串或文件中的Python语句,
相比于 eval,exec可以执行更复杂的 Python 代码。
需要说明的是在 Python2 中exec不是函数,而是一个内置语句(statement),
但是Python 2中有一个 execfile() 函数。
可以理解为 Python 3 把 exec 这个 statement 和 execfile() 函数的功能
整合到一个新的 exec() 函数中去了。
语法:
exec obj
参数:
obj -- 要执行的表达式。
返回值:
exec 返回值永远为 None。
exec('print("Hello World")')
exec("""for i in range(5):
print(i)""")
x = 10
expr = """
z = 30
sum = x + y + z
print(sum)
"""
def func():
y = 20
exec(expr)
exec(expr, {'x': 1, 'y': 2})
exec(expr, {'x': 1, 'y': 2}, {'y': 3, 'z': 4})
func()
execfile()
语法:
execfile(filename[, globals[, locals]])
参数:
filename -- 文件名。
globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
返回值:
返回表达式执行结果。
print('hello word!')
execfile('1.py')
with open('1.py','r') as f:
exec(f.read())
with open('1.py','r', encoding='utf8') as f:
exec(f.read())
F
file()
创建一个 file 对象,它有一个别名叫 open(),更形象一些,它们是内置函数。
参数是以字符串的形式传递的。
Python 2.x 中使用.
语法:
file(name[, mode[, buffering]])
参数:
name -- 文件名
mode -- 打开模式
buffering -- 0 表示不缓冲,如果为 1 表示进行行缓冲,大于 1 为缓冲区大小。
返回值:
文件对象。
hello word!
f = file('a.txt')
print f.read()
filter()
过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,
然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
语法:
filter(function, iterable)
参数:
function -- 判断函数。
iterable -- 可迭代对象。
返回值:
Python2.x 返回列表,Python3.x 返回迭代器对象.
iterable = filter(lambda n: n % 2 == 0, range(0, 10))
print(list(iterable))
float()
将整数和字符串转换成浮点数。
语法:
class float(x)
参数:
x -- 整数或纯数字的字符串
返回值:
返回浮点数。
print(float(1))
print(float('1'))
format()
Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。
基本语法是通过 {} 和 : 来代替以前的 % 。
format 函数可以接受不限个参数,位置可以不按顺序。
print("{} {}".format("hello", "world"))
print("{0} {1}".format("hello", "world"))
print("{1} {0} {1}".format("hello", "world"))
print ("{{0}}".format('hello'))
print("网站名:{name}, 地址 {url}".format(name="百度", url="www.baidu.com"))
url = {"name": "百度", "url": "www.baidu.com"}
print("网站名:{name}, 地址 {url}".format(**url))
list1 = ['百度', 'www.baidu.com']
print("网站名:{0[0]}, 地址 {0[1]}".format(list1))
"""
网站名:百度, 地址 www.baidu.com
网站名:百度, 地址 www.baidu.com
网站名:百度, 地址 www.baidu.com
"""
class A(object):
def __init__(self, age):
self.age = age
a = A(18)
print('age: {0.age}'.format(a))
格式化
数字 |
格式 |
输出 |
描述 |
3.1415926 |
{:.2f} |
3.14 |
保留小数点后两位 |
3.1415926 |
{:+.2f} |
+3.14 |
带符号保留小数点后两位 |
-1 |
{:+.2f} |
-1.00 |
带符号保留小数点后两位 |
2.71828 |
{:.0f} |
3 |
不带小数 |
5 |
{:0>2d} |
05 |
数字补零 (填充左边, 宽度为2) |
5 |
{:x<4d} |
5xxx |
数字补x (填充右边, 宽度为4) |
10 |
{:x<4d} |
10xx |
数字补x (填充右边, 宽度为4) |
1000000 |
{:,} |
1,000,000 |
以逗号分隔的数字格式 |
0.25 |
{:.2%} |
25.00% |
百分比格式 |
1000000000 |
{:.2e} |
1.00e+09 |
指数记法 |
13 |
{:>10d} |
13 |
右对齐 (默认, 宽度为10) |
13 |
{:<10d} |
13 |
左对齐 (宽度为10) |
13 |
{:^10d} |
13 |
中间对齐 (宽度为10) |
11 |
{:b}.format(11) |
1011 |
二进制 |
11 |
{:d}.format(11) |
11 |
十进制 |
11 |
{}.format(11) |
13 |
八进制 |
11 |
{:x}.format(11) |
b |
十六进制 |
11 |
{:#x}.format(11) |
0xb |
显示前缀 |
11 |
{:#X}.format(11) |
0XB |
大写 |
^, <, > 分别是居中、左对齐、右对齐,后面带宽度,
: 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。
+ 表示在正数前显示 +,负数前显示 -; (空格)表示在正数前加空格
b、d、o、x 分别是二进制、十进制、八进制、十六进制。
frozenset()
返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。
语法:
class frozenset([iterable])
参数:
iterable -- 可迭代的对象,比如列表、字典、元组等等。
返回值:
返回新的 frozenset 对象,如果不提供任何参数,默认会生成空集合.
为什么需要冻结的集合(即不可变的集合)呢?
因为在集合的关系中,有集合的中的元素是另一个集合的情况,
但是普通集合(set)本身是可变的,
那么它的实例就不能放在另一个集合中(set中的元素必须是不可变类型)。
所以,frozenset提供了不可变的集合的功能,当集合不可变时,
它就满足了作为集合中的元素的要求,就可以放在另一个集合中了。
list1 = [1, 2]
set1 = {list1}
a = frozenset(range(10))
print(a)
b = frozenset('hello')
print(b)
print({a, b})
G
getattr()
返回一个对象属性值。
语法:
getattr(object, name[, default])
参数:
object -- 对象。
name -- 字符串,对象属性。
default -- 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError。
返回值:
返回对象属性值。
class A(object):
value = 1
a = A()
print(getattr(a, 'value'))
print(getattr(a, 'value2', None))
print(getattr(a, 'value3'))
globals()
以字典类型返回当前位置的全部全局变量。
语法:
globals()
参数:
无
返回值:
返回全局变量的字典。
num = 1
print(globals())
"""
{'__name__': '__main__', '__doc__': None, '__package__': None,
'__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000020DB8D8D4A8>,
'__spec__': None, '__annotations__': {}, '__builtins__': ,
'__file__': 'F:/synchro/Project/测试/2.py', '__cached__': None, 'num': 1}
"""
H
hasattr()
判断对象是否包含对应的属性。
语法:
hasattr(object, name)
参数:
object -- 对象。
name -- 字符串,属性名。
返回值:
如果对象有该属性返回 True,否则返回 False。
class A(object):
value = 1
a = A()
print(hasattr(a, 'value'))
print(hasattr(a, 'value2'))
hash()
获取取一个对象(字符串或者数值等)的哈希值。
语法:
hash(object)
参数:
object -- 对象;
返回值:
返回对象的哈希值。
print(hash(123))
str1 = '123'
print(hash(str1))
help()
查看函数或模块用途的详细说明。
语法:
help([object])
参数:
object -- 对象;
返回值:
返回对象帮助信息。
print(help(hash))
"""
hash的使用信息...
"""
hex()
将10进制整数转换成16进制,以字符串形式表示。
语法:
hex(x)
参数:
x -- 10进制整数
返回值:
返回16进制数,以字符串形式表示。
base = hex(255)
print(base, type(base))
I
id()
返回对象的唯一标识符,标识符是一个整数。
CPython 中 id() 函数用于获取对象的内存地址。
语法:
id([object])
参数:
object -- 对象。
返回值:
返回对象的内存地址。
num = 1
print(id(num))
input()
Python3.x 中:
input() 函数接受一个标准输入数据,返回为 str 类型。
注意:
python3 里 input() 默认接收到的是 str 类型。
Python2.x 中:
input() 相等于 eval(raw_input(prompt)) ,用来获取控制台的输入。
raw_input() 将所有输入作为字符串看待,返回字符串类型。
而 input() 在对待纯数字输入时具有自己的特性,它返回所输入的数字的类型( int, float )。
注意:
input() 和 raw_input() 这两个函数均能接收 字符串 ,
但 raw_input() 直接读取控制台的输入(任何类型的输入它都可以接收)
而对于 input() ,它希望能够读取一个合法的 python 表达式,
即你输入字符串的时候必须使用引号将它括起来,否则它会引发一个 SyntaxError 。
除非对 input() 有特别需要,否则一般情况下我们都是推荐使用 raw_input() 来与用户交互。
Python3.x 中 的input() 等于 Python2.x 中的 raw_input()
语法:
input([prompt])
参数:
prompt: 提示信息
a = input('input>>>:')
print(a, type(a))
b = input('input>>>:')
print(b, type(b))
c = input('input>>>:')
print(c, type(c))
f = input('input>>>:')
print(f, type(f))
input>>>:1 # 输入数字1 绑定给变量a
(1, <type 'int'>)
input>>>:'a' # 输入字符a 绑定给变量b
('a', <type 'str'>)
input>>>:a # 没有带'' 被认为是变量名
(1, <type 'int'>)
input>>>:f
Traceback (most recent call last):
....
NameError: name 'f' is not defined
名称错误:名称'f'未定义
int()
将一个字符串或数字转换为整型。
语法:
class int(x, base=10)
参数:
x -- 字符串或数字。float 类型不能转.
base -- 进制数,默认十进制。如果是带参数base的话,参数x必须是字符串.
返回值:
返回整型数据。
print(int())
print(int('10'))
print(int('10', base=2))
print(int('10', base=8))
print(int('10', base=16))
isinstance()
判断一个对象是否是一个已知的类型.
如果要判断两个类型是否相同推荐使用 isinstance()。
语法:
isinstance(object, classinfo)
参数:
object -- 实例对象。
classinfo -- 可以是直接或间接类名、基本类型或者由它们组成的元组。
返回值:
如果对象的类型与参数二的类型(classinfo)相同则返回 True,否则返回 False。
a = 0
print(isinstance(a, int))
print(isinstance(a, str))
print(isinstance(a, (int, float, str)))
isinstance() 与 type() 区别:
type() 不会认为子类是一种父类类型,不考虑继承关系。
isinstance() 会认为子类是一种父类类型,考虑继承关系。
如果要判断两个类型是否相同推荐使用 isinstance()。
class A(object):
pass
a = A()
print(isinstance(a, A))
print(type(a) == A)
class B(A):
pass
b = B()
print(isinstance(b, A))
print(type(b) == A)
issubclass()
判断参数 class 是否是类型参数 classinfo 的子类。
语法:
issubclass(class, classinfo)
参数:
class -- 类。
classinfo -- 类。
返回值:
如果 class 是 classinfo 的子类返回 True,否则返回 False。
class A(object):
pass
class B(A):
pass
print(issubclass(B, A))
print(issubclass(B, object))
iter()
生成迭代器。
语法:
iter(object[, sentinel])
参数:
object -- 支持迭代的集合对象。
sentinel -- 如果传递了第二个参数,则参数 object 必须是一个可调用的对象(如,函数),
此时,iter 创建了一个迭代器对象,每次调用这个迭代器对象的__next__()方法时,都会调用 object。
返回值:
迭代器对象。
iterator = iter([1, 2, 3])
print(iterator.__next__())
for i in iterator:
print(i)
def a():
return 123
callable_iterator = (iter(a, [1, 2]))
print(callable_iterator.__next__())
print(callable_iterator.__next__())
L
len()
返回对象(字符、列表、元组等)长度或项目个数。
语法:
len(s)
参数:
s -- 对象。
返回值:
返回对象长度。
str1 = "hello"
print(len(str1))
l1 = [1, 2, 3, 4, 5]
print(len(l1))
list()
将可迭代对象转换为列表。
注意点:元组与列表是非常类似的,区别在于元组的元素值不能修改,元组是放在括号中,列表是放于方括号中.
语法:
list(tup)
参数:
tup -- 要转换为列表的可迭代对象。
返回值:
返回列表。
str1 = 'hello'
t1 = (1, 2, 3, 4, 5)
print(list(str1))
print(list(t1))
locals()
以字典类型返回当前位置的全部局部变量。
对于函数, 方法, lambda 函式, 类, 以及实现了 __call__ 方法的类实例, 它都返回 True。
语法:
locals():
参数:
无
返回值:
返回字典类型的局部变量。
def func():
a = 1
print(locals())
class A(object):
a = 2
print(locals())
A()
func()
long()
将数字或字符串转换为一个长整型。
Python3.x 版本已删除 long() 函数。
语法:
class long(x, base=10)
参数:
x -- 纯数字的字符串或数字。
base -- 可选,进制数,默认十进制。
返回值:
返回长整型数。
str1 = '1'
l1 = long(str1)
print l1
print type(l1)
str1 = '1'
l1 = long(str1)
print long()
print l1
print type(l1)
print long('0101', base=2)
M
map()
根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,
返回包含每次 function 函数返回值的新列表。
语法:
map(function, iterable, ...)
参数:
function -- 函数
iterable -- 一个或多个序列
返回值:
Python 2.x 返回列表。
Python 3.x 返回迭代器。
def square(i):
return i * i
iterable1 = map(square, range(0, 10))
print(list(iterable1))
iterable2 = map(lambda i: i * i, range(0, 10))
print(list(iterable2))
iterable3 = map(lambda x, y: x + y, range(0, 10), range(0, 10))
print(list(iterable3))
memoryview()
返回给定参数的内存查看对象(memory view)。
所谓内存查看对象,是指对支持缓冲区协议的数据进行包装,在不需要复制对象基础上允许Python代码访问。
语法:
memoryview(obj)
参数:
obj -- 对象
返回值:
返回元组列表。
v = memoryview('hello')
print v, type(v)
print v[0], v[1], v[-1]
print v[0:5]
print v[0:5].tobytes()
v = memoryview(bytearray('hello', 'utf8'))
print(v, type(v))
print(v[1])
print(v[-1])
print(v[0:5])
print(v[0:5].tobytes())
min()
返回给定参数的最小值,参数可以为序列。
语法:
min( x, y, z, .... )
参数:
x -- 数值表达式。
y -- 数值表达式。
z -- 数值表达式。
返回值:
返回给定参数的最小值。
print(min(1, 2, 3))
print(min('a', 'b', 'c'))
N
next()
返回迭代器的下一个项目。
next() 函数要和生成迭代器的 iter() 函数一起使用。
语法:
next(iterable[, default])
参数:
iterable -- 可迭代对象
default -- 可选,用于设置在没有下一个元素时返回该默认值,
如果不设置,又没有下一个元素则会触发 StopIteration 异常。
返回值:
返回下一个项目。
it = iter([1, 2])
print(next(it))
print(next(it))
print(next(it, 'no'))
print(next(it))
O
object()
返回一个空对象。
您不能向这个对象添加新的属性或方法。
这个对象是所有类的基础,它拥有所有类默认的内置属性和方法。
语法:
object()
参数:
无参数.
返回值:
x = object()
print(x, type(x))
oct()
将一个整数转换成 8 进制字符串。
Python2.x 版本的 8 进制以 0 作为前缀表示。
Python3.x 版本的 8 进制以 0o 作为前缀表示。
语法:
oct(x)
参数:
x -- 整数。
返回值:
返回 8 进制字符串。
print(oct(11))
open()
打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写。
语法:
open(name[, mode[, buffering]])
参数:
name : 一个包含了你要访问的文件名称的字符串值。
mode : mode 决定了打开文件的模式:只读,写入,追加等。
所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
buffering : 如果 buffering 的值被设为 0,就不会有寄存。
如果 buffering 的值取 1,访问文件时会寄存行。
如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。
如果取负值,寄存区的缓冲大小则为系统默认。
模式 |
描述 |
t |
文本模式 (默认)。 |
x |
写模式,新建一个文件,如果该文件已存在则会报错。 |
b |
二进制模式。 |
+ |
打开一个文件进行更新(可读可写)。 |
U |
通用换行模式(不推荐)。 |
r |
以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb |
以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 |
r+ |
打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ |
以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 |
w |
打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb |
以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
w+ |
打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb+ |
以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
a |
打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab |
以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ |
打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ |
以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
file 对象方法
file.read([size]):size 未指定则返回整个文件,如果文件大小 >2 倍内存则有问题,
f.read()读到文件尾时返回""(空字串)。
file.readline():返回一行。
file.readlines([size]) :返回包含size行的列表, size 未指定则返回全部行。
for line in f: print line :通过迭代器访问。
f.write("hello\n"):如果要写入字符串以外的数据,先将他转换为字符串。
f.tell():返回一个整数,表示当前文件指针的位置(就是到文件头的字节数)。
f.seek(偏移量,[起始位置]):用来移动文件指针。
偏移量: 单位为字节,可正可负
起始位置: 0 - 文件头, 默认值; 1 - 当前位置; 2 - 文件尾
f.close() 关闭文件
# 1.txt
hello word!
f = open('1.txt')
print(f.read())
f.close()
ord()
返回参数对应的 ASCII 数值,
或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。
语法:
ord(c)
参数:
c -- 长度为1的字符。
返回值:
返回值是对应的十进制整数。
print(ord('你'))
print(ord('好'))
P
pow()
返回 xy(x 的 y 次方) 的值。
分:
内置的 pow() 方法
math 模块 pow() 方法
注意:pow() 通过内置的方法直接调用,内置方法会把参数作为整型,而 math 模块则会把参数转换为 float。
内置的 pow() 方法
语法:
pow(x, y[, z])
函数是计算 x 的 y 次方,如果 z 在存在,则再对结果进行取模,其结果等效于 pow(x,y) %z。
import math
语法:
math.pow( x, y )
参数:
x -- 数值表达式。
y -- 数值表达式。
z -- 数值表达式。
返回值:
返回 x的y次方的值。
import math
print(math.pow(2, 8))
print(pow(2, 8))
print(pow(2, 8, 5))
print()
用于打印输出,最常见的一个函数。
在 Python3.3 版增加了 flush 关键字参数。
print 在 Python3.x 是一个函数,但在 Python2.x 版本不是一个函数,只是一个关键字。
语法:
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
参数:
objects -- 复数,表示可以一次输出多个对象。输出多个对象时,需要用 , 分隔。
sep -- 用来间隔多个对象,默认值是一个空格。
end -- 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。
file -- 要写入的文件对象。
flush -- 输出是否被缓存通常决定于 file,但如果 flush 关键字参数为 True,就会被强制刷新。
返回值:
None
print('a''b')
print('a', 'b')
print('a', 'b', sep='.')
print('a', end='')
print('b')
import time
print('加载中', end='')
for i in range(10):
print('.', end='', flush=True)
time.sleep(0.5)
property()
在新式类中返回属性值。
语法:
class property([fget[, fset[, fdel[, doc]]]])
参数:
fget -- 获取属性值的函数
fset -- 设置属性值的函数
fdel -- 删除属性值函数
doc -- 属性描述信息
返回值:
返回新式类属性。
class C(object):
def __init__(self):
self._x = 1
def getx(self):
"""
帮助文档
函数介绍:
"I'm the 'x' property."
return self._x
"""
return self._x
def setx(self, value):
self._x = value
def delx(self):
del self._x
x = property(getx, setx, delx, "I'm the 'x' property.")
c = C()
print(c.x)
c.x = 2
print(c.x)
del c.x
print(c.__class__.x.__doc__)
如果给定 doc 参数,其将成为这个属性值的 docstring,
否则 property 函数就会复制 fget 函数的 docstring(如果有的话)。
docstring --> 帮助文档
property 的 getter,setter 和 deleter 方法同样可以用作装饰器
这个代码和上个例子完全相同,但要注意这些额外函数的名字和 property 下的一样,例如这里的 x。
class C(object):
def __init__(self):
self._x = 1
@property
def x(self):
"""
帮助文档
函数介绍:
"I'm the 'x' property."
return self._x
"""
return self._x
@x.setter
def x(self, value):
self._x = value
@x.deleter
def x(self):
del self._x
c = C()
print(c.x)
c.x = 2
print(c.x)
del c.x
print(c.__class__.x.__doc__)
R
range()
python2.x range() 函数可创建一个整数列表,一般用在 for 循环中。
Python3 range() 返回的是一个可迭代对象(类型是对象),而不是列表类型.
语法:
range(start, stop[, step])
参数:
start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
返回值:
python2.x 整数列表
python3.x 可迭代对象
print(list(range(0, -10, -1)))
print(list(range(0)))
print(list(range(10, 0)))
print(list(range(10, 0, -1)))
raw_input()
获取控制台的输入。
raw_input() 将所有输入作为字符串看待,返回字符串类型。
注意:input() 和 raw_input() 这两个函数均能接收 字符串 ,
但 raw_input() 直接读取控制台的输入(任何类型的输入它都可以接收)。
而对于 input() ,它希望能够读取一个合法的 python 表达式,
即你输入字符串的时候必须使用引号将它括起来,否则它会引发一个 SyntaxError 。
Python2.x
除非对 input() 有特别需要,否则一般情况下我们都是推荐使用 raw_input() 来与用户交互。
注意:Python3 里 input() 默认接收到的是 str 类型。
Python2.x 的 raw_input() 等于 Python3 的 input()
语法:
raw_input([prompt])
参数:
prompt: 可选,字符串,可作为一个提示语。
返回值:
字符串类型的输入信息.
a = raw_input("input:")
print a, type(a)
"""
input:1
1
"""
reduce()
对参数序列中元素进行累积。
函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:
用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,
得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
Python3.x reduce() 已经被移到 functools 模块里,
如果我们要使用,需要引入 functools 模块来调用 reduce() 函数:
from functools import reduce
语法:
reduce() 函数语法:
reduce(function, iterable[, initializer])
参数:
function -- 函数,有两个参数
iterable -- 可迭代对象
initializer -- 可选,初始参数
返回值:
返回函数计算结果。
def add(x, y):
return x + y
sum1 = reduce(add, [1, 2, 3, 4, 5])
sum2 = reduce(lambda x, y: x + y, [1, 2, 3, 4, 5])
print(sum1)
print(sum2)
def add(x, y):
return x + y
sum1 = reduce(add, [1, 2, 3, 4, 5])
sum2 = reduce(lambda x, y: x + y, [1, 2, 3, 4, 5])
print(sum1)
print(sum2)
reload()
重新载入之前载入的模块。
Pytohn2.7的函数.
语法:
reload(module)
参数:
module -- 模块对象。
返回值:
返回模块对象。
import sys
print sys.getdefaultencoding()
reload(sys)
sys.setdefaultencoding('utf8')
print sys.getdefaultencoding()
repr()
将对象转化为供解释器读取的形式。
函数str() 用于将值转化为适于人阅读的形式,而repr() 转化为供解释器读取的形式。
语法:
repr(object)
参数:
object -- 对象。
返回值:
返回一个对象的 str 格式。
>>> s = 'hello word'
>>> repr(s)
"'hello word'"
>>> s = 123
>>> repr(s), type(repr(s))
('123', <type 'str'>)
repr()函数得到的字符串通常可以用来重新获得该对象,
repr()的输入对python比较友好。通常情况下obj==eval(repr(obj))这个等式是成立的。
>>> obj='I love Python'
>>> obj==eval(repr(obj))
True
>>> obj='I love Python'
>>> obj==eval(str(obj))
Traceback (most recent call last):
File "", line 1, in <module>
File "", line 1
I love Python
^
SyntaxError: invalid syntax
reverse()
语法:
list.reverse()
参数:
NA。
返回值:
该方法没有返回值,但是会对列表的元素进行反向排序。
l1 = [1, 2, 3, 4, 5]
l1.reverse()
print(l1)
round()
返回浮点数x的四舍五入值。
语法:
round( x [, n] )
参数:
x -- 数值表达式。
n -- 数值表达式,表示从小数点位数。
返回值:
返回浮点数x的四舍五入值。
print(round(3.1415926, 1)) # 3.1
print(round(3.1415926, 2)) # 3.14
print(round(3.1415926, 3)) # 3.142
S
set()
创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
语法:
class set([iterable])
参数说明:
iterable -- 可迭代对象对象,不可以支持存放可变类型的数据,可以放可变类型的变量.
返回值:
返回新的集合对象。
l1 = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
set(l1)
set([1, 2, 3, 4, 5, 1, 2, 3, 4, 5])
l1 = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
l2 = [4, 5, 6, 7, 8, 9]
s1 = set(l1)
print(s1)
s2 = set(l2)
print(s1 & s2)
print(s1 | s2)
print(s1 - s2)
setattr()
对应函数 getattr(),用于设置属性值,该属性不一定是存在的,
如果属性不存在会创建一个新的对象属性,并对属性赋值.
语法:
setattr(object, name, value)
参数:
object -- 对象。
name -- 字符串,对象属性。
value -- 属性值。
返回值:
None
class A(object):
value = 1
a = A()
print(getattr(a, 'value'))
setattr(a, 'value', 5)
print(getattr(a, 'value'))
class A(object):
value = 1
a = A()
setattr(a, 'age', 5)
print(getattr(a, 'age'))
print(a.age)
slice()
实现切片对象,主要用在切片操作函数里的参数传递。
语法:
class slice(start, stop[, step])
class slice(stop) 设置一个参数是默认是stop.
参数:
start -- 起始位置
stop -- 结束位置
step -- 间距
返回值:
返回一个切片对象。
my_slice = slice(5)
print(my_slice, type(my_slice))
arr = range(10)
arr_slice = arr[my_slice]
print(arr_slice, type(arr_slice))
print(list(arr_slice))
sorted()
对所有可迭代的对象进行排序操作。
sort 与 sorted 区别:
sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,
而内置函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
语法:
sorted(iterable, cmp=None, key=None, reverse=False)
参数:
iterable -- 可迭代对象。
cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,
此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
key -- 主要是用来进行比较的元素,只有一个参数,
具体的函数的参数就是取自于可迭代对象中,
指定可迭代对象中的一个元素来进行排序。
reverse -- 排序规则
reverse = True 降序 ,
reverse = False 升序(默认)。
返回值:
返回重新排序的列表。
a = [5, 7, 6, 3, 4, 1, 2]
print(sorted(a))
print(sorted(a, reverse=True))
L = [{1: 5}, {1: 3}, {1: 1}, {1: 9}]
def f2(a, b):
print(a, b)
print(a[1], b[1])
return a[1] - b[1]
L.sort(cmp=f2)
print L
new_L = sorted(L, key=lambda x: x[1])
print new_L
L = [(100, 1), (300, 3), (200, 2), (400, 4)]
print sorted(L, cmp=lambda x, y: cmp(x[1], y[1]))
students = [('kid', 'A', 15), ('qz', 'B', 12), ('qq', 'C', 10)]
new_students1 = sorted(students, key=lambda s: s[1])
new_students2 = sorted(students, key=lambda s: s[2])
print new_students1
print new_students2
staticmethod()
返回函数的静态方法。
该方法不强制要求传递参数.
使用装饰器@staticmethod。参数随意,没有“self”和“cls”参数,
但是方法体中不能使用类或实例的任何属性和方法.
语法:
staticmethod(function)
参数:
无
class A(object):
@staticmethod
def func(a, b, c):
pass
# 以上实例声明了静态方法 func,从而可以实现实例化使用 A().func(),当然也可以不实例化调用该方法 A().func()
class A(object):
@staticmethod
def func():
print('123')
A.func()
obj = A()
obj.func()
str()
将对象转化为适于人阅读的形式。
语法:
class str(object='')
参数:
object -- 对象。
返回值:
返回一个对象的str格式。
s = str(123)
print(s, type(s))
sum()
对序列进行求和计算。
语法:
sum(iterable[, start])
参数:
iterable -- 可迭代对象,如:列表、元组、集合。
start -- 指定相加的参数,如果没有设置这个值,默认为0。
返回值:
返回计算结果。
print(sum([0, 1, 2]))
print(sum((2, 3, 4), 1))
print(sum([0, 1, 2, 3, 4], 2))
super()
用于调用父类(超类)的一个方法。
是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,
但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(菱形继承)等种种问题。
MRO 就是类的方法解析顺序表, 其实也就是继承父类方法时的顺序表。
语法:
super(type[, object-or-type])
参数:
type -- 类。
object-or-type -- 类,一般是 self
返回值
无。
Python3.x 和 Python2.x 的一个区别是: Python 3 可以使用直接使用
super().xxx 代替 super(Class, self).xxx
class A:
def add(self, x):
y = x + 1
print(y)
class B(A):
def add(self, x):
super().add(x)
b = B()
b.add(2)
class A(object):
def add(self, x):
y = x + 1
print(y)
class B(A):
def add(self, x):
super(B, self).add(x)
b = B()
b.add(2)
class FooParent(object):
def __init__(self):
self.parent = '5'
print ('1')
def bar(self, message):
print (message)
class FooChild(FooParent):
def __init__(self):
super(FooChild, self).__init__()
print ('2')
def bar(self, message):
super(FooChild, self).bar(message)
print ('4')
print (self.parent)
fooChild = FooChild()
fooChild.bar('3')
T
tuple()
将列表转换为元组。
语法:
tuple( iterable )
参数:
iterable -- 要转换为元组的可迭代序列。
返回值:
返回元组。
print(tuple())
print(tuple([1, 2, 3, 4]))
print(tuple({1: 2, 3: 4}))
type()
只有第一个参数则返回对象的类型,三个参数返回新的类型对象.
isinstance() 与 type() 区别:
type() 不会认为子类是一种父类类型,不考虑继承关系。
isinstance() 会认为子类是一种父类类型,考虑继承关系。
如果要判断两个类型是否相同推荐使用 isinstance()。
语法:
type(object)
type(name, bases, dict)
参数:
name -- 类的名称。
bases -- 基类的元组。
dict -- 字典,类内定义的命名空间变量。
返回值:
一个参数返回对象类型, 三个参数,返回新的类型对象。
print(type(1))
print(type('hello'))
X = type('X', (object,), dict(a=1))
print(X)
x = X()
print(x.a)
class A(object):
pass
class B(A):
pass
print(isinstance(A(), A))
print(type(A()) == A)
print(isinstance(B(), A))
print(type(B()) == A)
###U
unichr()
unichr() 函数 和 chr() 函数功能基本一样, 只不过是返回 unicode 的字符。
注意: Python3 不支持 unichr(),改用 chr() 函数。
语法:
unichr(i)
参数:
i -- 可以是10进制也可以是16进制的形式的数字。
返回值:
返回 unicode 的字符。
print unichr(97)
unicode()
从给定的编码字符串创建一个新的 Unicode 对象.
默认序数范围内(128内)
语法:
unicode(string[, encoding[, errors]])
参数:
string -- 从给定的编码字符串创建一个新的 Unicode 对象。
encoding -- 默认为当前默认的字符串编码。
errors -- 错误可以是“严格”、“替换”或“忽略”,默认为“严格”。
'strict' 'replace' 'ignore' 'strict'.
返回值:
unicode 对象
s1 = unicode('哈哈', encoding='utf8')
print s1, type(s1)
V
vars()
返回对象object的属性和属性值的字典对象。
语法:
vars([object])
参数:
object -- 对象
返回值:
返回对象object的属性和属性值的字典对象,
如果没有参数,就打印当前调用位置的属性和属性值 类似 locals()。
print(vars())
"""
{'__name__': '__main__', '__doc__': None, '__package__': None,
'__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000024C788FD4A8>,
'__spec__': None, '__annotations__': {}, '__builtins__': ,
'__file__': 'F:/synchro/Project/测试/2.py', '__cached__': None}
"""
class A(object):
value = 1
print(vars(A))
"""
{'__module__': '__main__', 'value': 1, '__dict__': ,
'__weakref__': , '__doc__': None}
"""
a = A()
print(vars(a))
X
xrange()
xrange() 函数用法与 range 完全相同,所不同的是生成的不是一个数组,而是一个生成器。
语法:
xrange(stop)
xrange(start, stop[, step])
参数:
start: 计数从 start 开始。默认是从 0 开始。例如 xrange(5) 等价于 xrange(0, 5)
stop: 计数到 stop 结束,但不包括 stop。例如:xrange(0, 5) 是 [0, 1, 2, 3, 4] 没有 5
step:步长,默认为1。例如:xrange(0, 5) 等价于 xrange(0, 5, 1)
返回值:
返回生成器。
l1 = xrange(10)
print l1, type(l1)
print list(l1)
Z
zip()
将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,
然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,
利用 * 号操作符,可以将元组解压为列表。
zip 方法在 Python 2 和 Python 3 中的不同:在 Python 3.x 中为了减少内存,
zip() 返回的是一个对象。如需展示列表,需手动 list() 转换。
语法:
zip([iterable, ...])
参数:
iterabl -- 一个或多个迭代器;
返回值:
返回元组列表。
a = [1, 2, 3]
b = [4, 5, 6]
c = [4, 5, 6, 7, 8]
zipped1 = zip(a, b)
print(list(zipped1))
zipped2 = zip(a, c)
print(list(zipped2))
print(zip(*zipped1))
-
__ import __()
函数用于动态加载类和函数 。
如果一个模块经常变化就可以使用 __import__() 来动态载入。
语法:
__import__(name[, globals[, locals[, fromlist[, level]]]])
参数:
name -- 模块名
返回值:
返回元组列表。
print('hello')
m1 = __import__('1')
print(m1, type(m1))