python一共为我们提供了69个内置函数
内置函数 | ||||
---|---|---|---|---|
abs() |
delattr() |
hash() |
memoryview() |
set() |
all() |
dict() |
help() |
min() |
setattr() |
any() |
dir() |
hex() |
next() |
slice() |
ascii() |
divmod() |
id() |
object() |
sorted() |
bin() |
enumerate() |
input() |
oct() |
staticmethod() |
bool() |
eval() |
int() |
open() |
str() |
breakpoint() |
exec() |
isinstance() |
ord() |
sum() |
bytearray() |
filter() |
issubclass() |
pow() |
super() |
bytes() |
float() |
iter() |
print() |
tuple() |
callable() |
format() |
len() |
property() |
type() |
chr() |
frozenset() |
list() |
range() |
vars() |
classmethod() |
getattr() |
locals() |
repr() |
zip() |
compile() |
globals() |
map() |
reversed() |
__import__() |
complex() |
hasattr() |
max() |
round() |
abs(x)
返回数字的绝对值。参数可以是整数或浮点数。如果参数为复数,则返回其大小。
all(iterable)
如果 iterable 的所有元素为真(或迭代器为空),返回 True
。
检查 iterable 中是否含有空字符,只要有一个空字符就返回False
# 等价于
def all(iterable):
for element in iterable:
if not element:
return False
return True
any(iterable)
如果 iterable 的任一元素为真则返回 True
。 如果迭代器为空,返回 False
。
# 等价于
def any(iterable):
for element in iterable:
if element:
return True
return False
ascii(object)
返回一个对象可打印的 ASCII 编码的字符,生成的字符串和 Python 2 的 repr()
返回的结果相似。
bin(x)
将一个整数转变为一个前缀为“0b”的二进制字符串。结果是一个合法的 Python 表达式。如果 x 不是 Python 的 int
对象,那它需要定义 __index__()
方法返回一个整数。
bool([x])
返回一个布尔值,True
或者 False
。如果 x 是假的或者被省略,返回 False
;其他情况返回 True
。
breakpoint
(*args, **kwargs)
此函数会在调用时将你陷入调试器中。具体来说,它调用 sys.breakpointhook()
,直接传递 args
和 kws
。默认情况下, sys.breakpointhook()
调用 pdb.set_trace()
且没有参数。在这种情况下,它纯粹是一个便利函数,因此您不必显式导入 pdb
且键入尽可能少的代码即可进入调试器。但是, sys.breakpointhook()
可以设置为其他一些函数并被 breakpoint()
自动调用,以允许进入你想用的调试器。3.7 新版功能.
class bytearray
([source[, encoding[, errors]]])
返回一个新的 bytes 数组。 bytearray
类是一个可变序列,包含范围为 0 <= x < 256 的整数。它有可变序列大部分常见的方法,见 可变序列类型 的描述;同时有 bytes
类型的大部分方法,参见 bytes 和 bytearray 操作。
可选形参 source 可以用不同的方式来初始化数组:
bytearray()
会使用 str.encode()
方法来将 string 转变成 bytes。0 <= x < 256
的整数,它会被用作数组的初始内容。class bytes
([source[, encoding[, errors]]])
返回一个新的“bytes”对象, 是一个不可变序列,包含范围为 0 <= x < 256
的整数。bytes
是 bytearray
的不可变版本 - 它有其中不改变序列的方法和相同的索引、切片操作。
因此,构造函数的实参和 bytearray()
相同。字节对象还可以用字面值创建
callable(object)
如果实参 object 是可调用的,返回 True
,否则返回 False
。如果返回真,调用仍可能会失败;但如果返回假,则调用 object 肯定会失败。
chr(i)
返回 Unicode 码位为整数 i 的字符的字符串格式。
例如,chr(97)
返回字符串 'a'
,chr(8364)
返回字符串 '€'
。这是 ord()
的逆函数。
实参的合法范围是 0 到 1,114,111(16 进制表示是 0x10FFFF)。如果 i 超过这个范围,会触发 ValueError
异常。
@classmethod
把一个方法封装成类方法。
一个类方法把类自己作为第一个实参,就像一个实例方法把实例自己作为第一个实参。
# 用以下习惯来声明类方法
class C:
@classmethod
def f(cls, arg1, arg2, ...): ...
类方法的调用可以在类上进行 (例如 C.f()
) 也可以在实例上进行 (例如 C().f()
)。
compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)
将 source编译成代码或 AST 对象。代码对象可以被 exec()
或 eval()
执行。
''
)。'exec'
;如果是单一表达式,可以是 'eval'
;如果是单个交互式语句,可以是 'single'
。compile()
的代码中有效的 future 语句来编译代码。 如果给出了 flags 参数但没有 dont_inherit (或是为零) 则 flags 参数所指定的 以及那些无论如何都有效的 future 语句会被使用。 如果 dont_inherit 为一个非零整数,则只使用 flags 参数 – 在调用外围有效的 future 语句将被忽略。-1
选择与解释器的 -O
选项相同的优化级别。显式级别为 0
(没有优化;__debug__
为真)、1
(断言被删除, __debug__
为假)或 2
(文档字符串也被删除)。class complex
([real[, imag]])
返回值为real+ imag*1j
的复数,或将字符串或数字转换为复数。如果第一个形参是字符串,则它被解释为一个复数,并且函数调用时必须没有第二个形参。第二个形参不能是字符串。每个实参都可以是任意的数值类型(包括复数)。如果省略了 imag,则默认值为零,构造函数会像 int
和 float
一样进行数值转换。如果两个实参都省略,则返回 0j
。
delattr(object,name)
setattr()
相关的函数。实参是一个对象和一个字符串。该字符串必须是对象的某个属性。如果对象允许,该函数将删除指定的属性。
class dict
(**kwargs)
class dict
(mapping, **kwarg)
class dict
(iterable, **kwarg)
创建一个新的字典。dict
对象是一个字典类。
dir([object])
如果没有实参,则返回当前本地作用域模块中的属性列表。如果有实参,它会尝试返回该对象的有效属性列表。
# 返回的列表按字母表排序
import struct
dir() # 获得当前模块的属性列表
>>> ['__builtins__', '__name__', 'struct']
dir(struct) # show the names in the struct module
>>> ['Struct', '__all__', '__builtins__', '__cached__', '__doc__', '__file__',
'__initializing__', '__loader__', '__name__', '__package__',
'_clearcache', 'calcsize', 'error', 'pack', 'pack_into',
'unpack', 'unpack_from']
dir([ ]) # 查看列表的方法
>>> ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
divmod(a, b)
它将两个(非复数)数字作为实参,并在执行整数除法时返回一对商和余数。
对于混合操作数类型,适用双目算术运算符的规则。对于整数,结果和 (a // b, a % b)
一致。
对于浮点数,结果是 (q, a % b)
,q 通常是 math.floor(a / b)
但可能会比 1 小。
enumerate(iterable, start=0)
返回一个枚举对象。
enumerate()
返回一个元组,里面包含一个计数值(从 start 开始,默认为 0)和通过迭代 iterable 获得的值。
iterable 必须是一个序列,或 迭代器,或其他支持迭代的对象。
# 等价于:
def enumerate(sequence, start=0):
n = start
for elem in sequence:
yield n, elem
n += 1
例子:
>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1))
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
eval(expression[, globals[, locals]])
eval() 函数用来执行一个字符串表达式,并返回表达式的值。
expression – 表达式。
globals – 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
locals – 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
>>>x = 7
>>> eval( '3 * x' )
21
>>> eval('pow(2,2)')
4
>>> eval('2 + 2')
4
>>> n=81
>>> eval("n + 4")
85
exec(object[, globals[, locals]])
exec 执行储存在字符串或文件中的 Python 语句,相比于 eval,exec可以执行更复杂的 Python 代码
exec 返回值永远为 None。
>>>exec('print("Hello World")')
Hello World
# 单行语句字符串
>>> exec("print ('runoob.com')")
runoob.com
# 多行语句字符串
>>> exec ("""for i in range(5):
... print ("iter time: %d" % i)
... """)
iter time: 0
iter time: 1
iter time: 2
iter time: 3
iter time: 4
filter(function, iterable)
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。
# 过滤出列表中的所有奇数
def is_odd(n):
return n % 2 == 1
tmplist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
newlist = list(tmplist)
print(newlist)
>>> [1, 3, 5, 7, 9]
# 过滤出1~100中平方根是整数的数
import math
def is_sqr(x):
return math.sqrt(x) % 1 == 0
tmplist = filter(is_sqr, range(1, 101))
newlist = list(tmplist)
print(newlist)
>>> [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
class float([x])
返回从数字或字符串 x 生成的浮点数。
>>> float('+1.23')
1.23
>>> float(' -12345\n')
-12345.0
>>> float('1e-003')
0.001
>>> float('+1E6')
1000000.0
>>> float('-Infinity')
-inf
format(value[, format_spec])
一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。
基本语法是通过 {} 和 : 来代替以前的 % 。
format 函数可以接受不限个参数,位置可以不按顺序。
# 实例
"{} {}".format("hello", "world") # 不设置指定位置,按默认顺序
>>> 'hello world'
"{0} {1}".format("hello", "world") # 设置指定位置
>>> 'hello world'
"{1} {0} {1}".format("hello", "world") # 设置指定位置
>>> 'world hello world'
print("学校名:{name}, 地址 {addr}".format(name="工大", addr="杭州"))
# 通过字典设置参数
site = {"name": "工大", "addr": "杭州"}
print("学校名:{name}, 地址 {addr}".format(**site))
# 通过列表索引设置参数
my_list = ['工大', '杭州']
print("学校名:{0[0]}, 地址 {0[1]}".format(my_list)) # "0" 是必须的
# 三个输出都是 学校名:工大,地址:杭州
class frozenset([iterable])
返回一个新的 frozenset
对象,它包含可选参数 iterable 中的元素。 frozenset
是一个内置的类。有关此类的文档,请参阅 frozenset
和 集合类型 — set, frozenset。请参阅内建的 set
、list
、tuple
和 dict
类,以及 collections
模块来了解其它的容器。
getattr(object, name[, default])
返回对象命名属性的值。
name 必须是字符串。
如果该字符串是对象的属性之一,则返回该属性的值。
例如, getattr(x, 'foobar')
等同于 x.foobar
。如果指定的属性不存在,且提供了 default 值,则返回它,否则触发 AttributeError
。
globals()
返回表示当前全局变量表的字典。
hasattr(object, name)
该实参是一个对象和一个字符串。如果字符串是对象的属性之一的名称,则返回 True
,否则返回 False
。(此功能是通过调用 getattr(object, name)
看是否有 AttributeError
异常来实现的。)
hash(object)
返回该对象的哈希值(如果它有的话)。哈希值是整数。
它们在字典查找元素时用来快速比较字典的键。相同大小的数字变量有相同的哈希值(即使它们类型不同,如 1 和 1.0)。
help([object])
启动内置的帮助系统(此函数主要在交互式中使用)。
如果没有实参,解释器控制台里会启动交互式帮助系统。
如果实参是一个字符串,则在模块、函数、类、方法、关键字或文档主题中搜索该字符串,并在控制台上打印帮助信息。
如果实参是其他任意对象,则会生成该对象的帮助页。
hex(x)
将整数转换为以“0x”为前缀的小写十六进制字符串。如果 x 不是 Python int
对象,则必须定义返回整数的 __index__()
方法。
>>> hex(255)
'0xff'
>>> hex(-42)
'-0x2a'
如果要将整数转换为大写或小写的十六进制字符串,并可选择有无“0x”前缀,
>>> '%#x' % 255, '%x' % 255, '%X' % 255
('0xff', 'ff', 'FF')
>>> format(255, '#x'), format(255, 'x'), format(255, 'X')
('0xff', 'ff', 'FF')
>>> f'{255:#x}', f'{255:x}', f'{255:X}'
('0xff', 'ff', 'FF')
id(object)
返回对象的“标识值”。该值是一个整数,在此对象的生命周期中保证是唯一且恒定的。两个生命期不重叠的对象可能具有相同的 id()
值。
input([prompt])
如果存在 prompt 实参,则将其写入标准输出,末尾不带换行符。接下来,该函数从输入中读取一行,将其转换为字符串(除了末尾的换行符)并返回。
class int
([x])
返回一个使用数字或字符串 x 生成的整数对象,或者没有实参的时候返回 0 。
isinstance(object, classinfo)
判断object对象是不是classinfo类
如果 object 实参是 classinfo 实参的实例,或者是(直接、间接或 虚拟)子类的实例,则返回 true。
如果 object 不是给定类型的对象,函数始终返回 false。
如果 classinfo 是对象类型(或多个递归元组)的元组,如果 object 是其中的任何一个的实例则返回 true。
如果 classinfo 既不是类型,也不是类型元组或类型的递归元组,那么会触发 TypeError
异常。
issubclass(class, classinfo)
判断class是否是classinfo的子类
如果 class 是 classinfo 的子类(直接、间接或 虚拟 的),则返回 true。classinfo 可以是类对象的元组,此时 classinfo 中的每个元素都会被检查。其他情况,会触发 TypeError
异常。
iter(object[, sentinel])
返回一个 iterator 对象。
迭代器 = iter(可迭代) 等于 迭代器 = 可迭代的.__iter__()
根据是否存在第二个实参,第一个实参的解释是非常不同的。
如果没有第二个实参,object 必须是支持迭代协议(有 __iter__()
方法)的集合对象,或必须支持序列协议(有 __getitem__()
方法,且数字参数从 0
开始)。如果它不支持这些协议,会触发 TypeError
。
如果有第二个实参 sentinel,那么 object 必须是可调用的对象。这种情况下生成的迭代器,每次迭代调用它的 __next__()
方法时都会不带实参地调用 object;如果返回的结果是 sentinel 则触发 StopIteration
,否则返回调用结果。
len(s)
返回对象的长度(元素个数)。
实参可以是序列(如 string、bytes、tuple、list 或 range 等)或集合(如 dictionary、set 或 frozen set 等)。
class list([iterable])
将iterable转换成列表,虽然被称为函数,list
实际上是一种可变序列类型
locals()
获取执行本方法所在命名空间内的局部变量的字典。
在函数代码块但不是类代码块中调用 locals()
时将返回自由变量。 请注意在模块层级上,locals()
和 globals()
是同一个字典。
map(function, iterable, ...)
map() 会根据提供的函数对指定序列做映射。
返回一个将 function 应用于 iterable 中每一项并输出其结果的迭代器。
>>>def square(x) : # 计算平方数
return x ** 2
>>> map(square, [1,2,3,4,5]) # 计算列表各个元素的平方
[1, 4, 9, 16, 25]
>>> map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函数
[1, 4, 9, 16, 25]
# 提供了两个列表,对相同位置的列表数据进行相加
>>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
[3, 7, 11, 15, 19]
max
(iterable, ***[, key, default])
max
(arg1, arg2, *args[, key])
返回可迭代对象中最大的元素,或者返回两个及以上实参中最大的。
memoryview(obj)
返回由给定实参创建的“内存视图”对象。
min
(iterable, ***[, key, default])
min
(arg1, arg2, *args[, key])
返回可迭代对象中最小的元素,或者返回两个及以上实参中最小的。
next(iterator[, default])
通过调用 iterator 的 __next__()
方法获取下一个元素。如果迭代器耗尽,则返回给定的 default,如果没有默认值则触发 StopIteration
。
class object
返回一个没有特征的新对象。object
是所有类的基类。它具有所有 Python 类实例的通用方法。这个函数不接受任何实参。注解 由于 object
没有 __dict__
,因此无法将任意属性赋给 object
的实例。
oct(x)
将一个整数转变为一个前缀为“0o”的八进制字符串。结果是一个合法的 Python 表达式。
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
open() 函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写。
file对象方法
ord(c)
对表示单个 Unicode 字符的字符串,返回代表它 Unicode 码点的整数。
例如 ord('a')
返回整数 97
, ord('€')
(欧元符号)返回 8364
。这是 chr()
的逆函数。
pow(x, y[, z])
返回 x 的 y 次幂;如果 z 存在,则对 z 取余(比直接 pow(x, y) % z
计算更高效)。两个参数形式的 pow(x,y)
等价于幂运算符: x**y
。
print(objects, sep=' ', end='\n', file=sys.stdout, flush=False)
将 objects 打印到 file 指定的文本流,以 sep 分隔并在末尾加上 end。
sep, end, file 和 flush 如果存在,它们必须以关键字参数的形式给出。
所有非关键字参数都会被转换为字符串,就像是执行了 str()
一样,并会被写入到流,以 sep 且在末尾加上 end。 sep 和 end 都必须为字符串;它们也可以为 None
,这意味着使用默认值。
如果没有给出 objects,则 print()
将只写入 end。
class property(fget=None, fset=None, fdel=None, doc=None)
返回 property 属性。
fget – 获取属性值的函数
fset – 设置属性值的函数
fdel – 删除属性值函数
doc – 属性描述信息
class C(object):
def __init__(self):
self._x = None
def getx(self):
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 的实例化,
c.x 将触发 getter,
c.x = value 将触发 setter ,
del c.x 触发 deleter。
range
(stop)
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)
虽然被称为函数,但 range
实际上是一个不可变的序列类型
repr(object)
repr() 函数将对象转化为供解释器读取的形式。
返回一个对象的 string 格式。
>>>s = 'RUNOOB'
>>> repr(s)
"'RUNOOB'"
>>> dict = {'runoob': 'runoob.com', 'google': 'google.com'};
>>> repr(dict)
"{'google': 'google.com', 'runoob': 'runoob.com'}"
reversed(seq)
返回一个反向的 iterator。 seq 必须是一个具有 __reversed__()
方法的对象或者是支持该序列协议(具有从 0
开始的整数类型参数的 __len__()
方法和 __getitem__()
方法)。
round(number[, ndigits])
返回 number 舍入到小数点后 ndigits 位精度的值。
class set
([iterable])
返回一个新的 set
对象,可以选择带有从 iterable 获取的元素。 set
是一个内置类型。
setattr
(object, name, value)
此函数与 getattr()
两相对应。 其参数为一个对象、一个字符串和一个任意值。 字符串指定一个现有属性或者新增属性。 函数会将值赋给该属性,只要对象允许这种操作。
例如,setattr(x, 'foobar', 123)
等价于 x.foobar = 123
。
class slice
(stop)
class slice
(start, stop[, step])
slice() 函数实现切片对象,主要用在切片操作函数里的参数传递。
返回一个表示由 range(start, stop, step)
所指定索引集的 slice 对象。 其中 start 和 step 参数默认为 None
。 切片对象具有仅会返回对应参数值(或其默认值)的只读数据属性 start
, stop
和 step
。 它们没有其他的显式功能;不过它们会被 NumPy 以及其他第三方扩展所使用。 切片对象也会在使用扩展索引语法时被生成。
例如: a[start:stop:step]
或 a[start:stop, i]
。
>>>myslice = slice(5) # 设置截取5个元素的切片
>>> myslice
slice(None, 5, None)
>>> arr = range(10)
>>> arr
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> arr[myslice] # 截取 5 个元素
[0, 1, 2, 3, 4]
*sorted
(iterable, , key=None, reverse=False)
根据 iterable 中的项返回一个新的已排序列表。具有两个可选参数,它们都必须指定为关键字参数。key 指定带有单个参数的函数,用于从 iterable 的每个元素中提取用于比较的键 (例如 key=str.lower
)。 默认值为 None
(直接比较元素)。reverse 为一个布尔值。 如果设为 True
,则每个列表元素将按反向顺序比较进行排序。
@staticmethod
将方法转换为静态方法。静态方法不会接收隐式的第一个参数。要声明一个静态方法,请使用此语法
class C:
@staticmethod
def f(arg1, arg2, ...): ...
静态方法的调用可以在类上进行 (例如 C.f()
) 也可以在实例上进行 (例如 C().f()
)。
class str
(object=’’)
class str
(object=b’’, encoding=‘utf-8’, errors=‘strict’)
返回一个 str
版本的 object 。有关详细信息,请参阅 str()
。str
是内置字符串 class 。
sum
(iterable[, start])
从 start 开始自左向右对 iterable 中的项求和并返回总计值。 start 默认为 0
。 iterable 的项通常为数字,开始值则不允许为字符串。
super
([type[, object-or-type]])
返回一个代理对象,它会将方法调用委托给 type 指定的父类或兄弟类。 这对于访问已在类中被重载的继承方法很有用。 搜索顺序与 getattr()
所使用的相同,只是 type 指定的类型本身会被跳过。
tuple
([iterable])
返回一个元组
虽然被称为函数,但 tuple
实际上是一个不可变的序列类型
class type
(object)
class type
(name, bases, dict)
传入一个参数时,返回 object 的类型。 返回值是一个 type 对象,通常与 object.__class__
所返回的对象相同。
推荐使用 isinstance()
内置函数来检测对象的类型,因为它会考虑子类的情况。传入三个参数时,返回一个新的 type 对象。
vars
([object])
返回模块、类、实例或任何其它具有 __dict__
属性的对象的 __dict__
属性。
*zip
(iterables)
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,我们可以使用 list() 转换来输出列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b) # 返回一个对象
>>> zipped
<zip object at 0x103abc288>
>>> list(zipped) # list() 转换为列表
[(1, 4), (2, 5), (3, 6)]
>>> list(zip(a,c)) # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> a1, a2 = zip(*zip(a,b)) # 与 zip 相反,zip(*) 可理解为解压,返回二维矩阵式
>>> list(a1)
[1, 2, 3]
>>> list(a2)
[4, 5, 6]
__import__
(name, globals=None, locals=None, fromlist=(), level=0)
此函数会由 import
语句发起调用。 它可以被替换 (通过导入 builtins
模块并赋值给 builtins.__import__
) 以便修改 import
语句的语义,但是 强烈 不建议这样做。
作用域相关
基于字典的形式获取局部变量和全局变量
globals()——获取全局变量的字典
locals()——获取执行本方法所在命名空间内的局部变量的字典
迭代器/生成器相关
next(迭代器) 等于 迭代器.__next__()
迭代器 = iter(可迭代) 等于 迭代器 = 可迭代的.__iter__()
range()
其他
查看参数所属类型的所有内置方法
dir() 默认查看全局空间内的属性,也接受一个参数,查看这个参数内的方法或变量
print(dir(list)) #查看列表的内置方法
print(dir(int)) #查看整数的内置方法
和调用相关
callable(o),o是参数,看这个变量是不是可调用。
如果o是一个函数名,就会返回True
def func():pass
print(callable(func)) #参数是函数名,可调用,返回True
print(callable(123)) #参数是数字,不可调用,返回False
帮助方法
在控制台执行**help()**进入帮助模式。可以随意输入变量或者变量的类型。输入q退出
或者直接执行help(o),o是参数,查看和变量o有关的操作。。。
模块操作相关
__import__
导入一个模块
import time
os = __import__('os')
print(os.path.abspath('.'))
文件操作相关
open() 打开一个文件,返回一个文件操作符(文件句柄)
操作文件的模式有r,w,a,r+,w+,a+ 共6种,每一种方式都可以用二进制的形式操作(rb,wb,ab,rb+,wb+,ab+)
可以用encoding指定编码.
内存相关:
id(o) o是参数,返回一个变量的内存地址
hash(o) o是参数,返回一个可hash变量的哈希值,不可hash的变量被hash之后会报错。
t = (1,2,3)
l = [1,2,3]
print(hash(t)) #可hash
print(hash(l)) #会报错
'''
结果:
TypeError: unhashable type: 'list'
'''
hash函数会根据一个内部的算法对当前可hash变量进行处理,返回一个int数字。
*每一次执行程序,内容相同的变量hash值在这一次执行过程中不会发生改变。
数据类型相关:
type(o) 返回变量o的数据类型
输入输出相关:
input() 输入
s = input("请输入内容 : ") #输入的内容赋值给s变量
print(s) #输入什么打印什么。数据类型是str
print() 输出
def print(self, *args, sep=' ', end='\n', file=None): # known special case of print
"""
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
file: 默认是输出到屏幕,如果设置为文件句柄,输出到文件
sep: 打印多个值之间的分隔符,默认为空格
end: 每一次打印的结尾,默认为换行符
flush: 立即把内容输出到流文件,不作缓存
"""
f = open('tmp_file','w')
print(123,456,sep=',',file = f,flush=True)
# 进度条打印
import time
for i in range(0,101,2):
time.sleep(0.1)
char_num = i//2 #打印多少个'*'
per_str = '\r%s%% : %s\n' % (i, '*' * char_num) if i == 100 else '\r%s%% : %s'%(i,'*'*char_num)
print(per_str,end='', flush=True)
#小越越 : \r 可以把光标移动到行首但不换行
字符串类型代码的执行
eval() 将字符串类型的代码执行并返回结果
print(eval('1+2+3+4'))
>>> 10
exec()将自字符串类型的代码执行
print(exec("1+2+3+4"))
exec("print('hello,world')")
>>> None
>>> hello,world
code = '''
import os
print(os.path.abspath('.'))
'''
code = '''
print(123)
a = 20
print(a)
'''
a = 10
exec(code,{'print':print},)
print(a)
>>> 123
>>> 20
>>> 10
compile 将字符串类型的代码编译。代码对象能够通过exec语句来执行或者eval()进行求值。
参数说明:
>>> #流程语句使用exec
>>> code1 = 'for i in range(0,10): print (i)'
>>> compile1 = compile(code1,'','exec')
>>> exec (compile1)
1
3
5
7
9
>>> #简单求值表达式用eval
>>> code2 = '1 + 2 + 3 + 4'
>>> compile2 = compile(code2,'','eval')
>>> eval(compile2)
>>> #交互语句用single
>>> code3 = 'name = input("please input your name:")'
>>> compile3 = compile(code3,'','single')
>>> name #执行前name变量不存在
Traceback (most recent call last):
File "" , line 1, in <module>
name
NameError: name 'name' is not defined
>>> exec(compile3) #执行时显示交互命令,提示输入
please input your name:'pythoner'
>>> name #执行后name变量有值
"'pythoner'"
和数字相关
数字——数据类型相关:bool,int,float,complex
数字——进制转换相关:bin,oct,hex
数字——数学运算:abs,divmod,min,max,sum,round,pow
和数据结构相关
序列——列表和元组相关的:list和tuple
序列——字符串相关的:str,format,bytes,bytearry,memoryview,ord,chr,ascii,repr
序列:reversed,slice
数据集合——字典和集合:dict,set,frozenset
数据集合:len,sorted,enumerate,all,any,zip,filter,map
all() # 检查一个序列中是否含有空字符,只要有一个空字符就返回False
any() # 检查一个序列中是否含有空字符,只要有一个不是空字符就返回True
import math
def is_sqr(x):
return math.sqrt(x) % 1 == 0
newlist = filter(is_sqr, range(1, 101))
print(newlist)