您的当前位置:首页>全部文章>文章详情

python 内置函数

发表于:2019-09-25 15:36:01浏览:53次TAG: #python
内置函数
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)

返回数字的绝对值。参数可以是整数或浮点数。如果参数是复数,则返回其大小。

>>> abs(1)
1

>>> abs(-1.1)
1.1

all(iterable)

如果 iterable 的所有元素为真(或迭代器为空),返回 True 。

>>> i = [1, 2]
>>> all(i)
True

>>> i = [0, 1]
>>> all(i)
False

>>> i = []
>>> all(i)
True

any(iterable)

如果 iterable 的任一元素为真则返回 True。 如果迭代器为空,返回 False。

>>> i = [1, 2]
>>> any(i)
True

>>> i = [0, 1]
>>> any(i)
True

>>> i = [0, 0]
>>> any(i)
False

>>> i = []
>>> any(i)
False

ascii(object)

就像函数 repr(),返回一个对象可打印的字符串,但是 repr() 返回的字符串中非 ASCII 编码的字符,会使用 \x、\u 和 \U 来转义。生成的字符串和 Python 2 的 repr() 返回的结果相似。

>>> i = []
>>> ascii(i)
'[]'

>>> i = {'a': 'b'}
>>> ascii(i)
"{'a': 'b'}"

bin(x)

将一个整数转变为一个前缀为“0b”的二进制字符串。结果是一个合法的 Python 表达式。如果 x 不是 Python 的 int 对象,那它需要定义 __index__() 方法返回一个整数。

>>> bin(3)
'0b11'

>>> bin(-10)
'-0b1010'

如果不一定需要前缀“0b”,还可以使用如下的方法。

>>> format(14, '#b'), format(14, 'b')
('0b1110', '1110')
>>> f'{14:#b}', f'{14:b}'
('0b1110', '1110')

class bool(x)

返回一个布尔值,True 或者 False。

>>> bool
<class 'bool'>

>>> bool(1)
True

>>> bool(0)
False

>>> bool('')
False

>>> bool('a')
True

chr(i)

返回 Unicode 码位为整数 i 的字符的字符串格式。例如,chr(97) 返回字符串 ‘a’,chr(8364) 返回字符串 ‘€’。这是 ord() 的逆函数。

实参的合法范围是 0 到 1,114,111(16 进制表示是 0x10FFFF)。如果 i 超过这个范围,会触发 ValueError 异常。

>>> chr(1)
'\x01'

>>> chr(97)
'a'

>>> chr(1114111)
'\U0010ffff'

>>> chr(1114112)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: chr() arg not in range(0x110000)

@classmethod

把一个方法封装成类方法。

一个类方法把类自己作为第一个实参,就像一个实例方法把实例自己作为第一个实参。请用以下习惯来声明类方法:

class C:
    @classmethod
    def f(cls, arg1):
        print(arg1)

// 不需要实例化
C.f(arg1 = 'abc')

输出

abc

compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)

将一个字符串编译为字节代码。返回表达式执行结果。

  • source — 字符串或者AST(Abstract Syntax Trees)对象。。
  • filename — 代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。
  • mode — 指定编译代码的种类。可以指定为:
    • exec — source 是语句序列
    • eval — source 是单一表达式
    • single — source 是单个交互式语句
  • flags — 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。。
  • flagsdont_inherit是用来控制编译源码时的标志
>>> str = "for i in range(0,10): print(i)" 
>>> c = compile(str,'','exec')
>>> c
<code object <module> at 0x10a6395d0, file "", line 1>
>>> exec(c)
0
1
2
3
4
5
6
7
8
9


>>> str = "3 * 4 + 5"
>>> a = compile(str,'','eval')
>>> eval(a)
17

class complex([real[, imag]])

返回值为 real + imag*1j 的复数,或将字符串或数字转换为复数。如果第一个形参是字符串,则它被解释为一个复数,并且函数调用时必须没有第二个形参。第二个形参不能是字符串。每个实参都可以是任意的数值类型(包括复数)。如果省略了 imag,则默认值为零,构造函数会像 int 和 float 一样进行数值转换。如果两个实参都省略,则返回 0j。

  • real — int, long, float 或 字符串
  • imag — int, long, float
>>>complex(1, 2)
(1 + 2j)

>>> complex(1)    # 数字
(1 + 0j)

>>> complex("1")  # 当做字符串处理
(1 + 0j)

# 注意:这个地方在"+"号两边不能有空格,也就是不能写成"1 + 2j",应该是"1+2j",否则会报错
>>> complex("1+2j")
(1 + 2j)

delattr(object, name)

setattr() 相关的函数。实参是一个对象和一个字符串。该字符串必须是对象的某个属性。如果对象允许,该函数将删除指定的属性。例如 delattr(x, ‘foobar’) 等价于 del x.foobar 。

  • object — 对象
  • name — 必须是对象的属性。
#!/usr/bin/python
# -*- coding: UTF-8 -*-

class Coordinate:
    x = 10
    y = -5
    z = 0

point1 = Coordinate() 

print('x = ',point1.x)
print('y = ',point1.y)
print('z = ',point1.z)

delattr(Coordinate, 'z')

print('--删除 z 属性后--')
print('x = ',point1.x)
print('y = ',point1.y)

# 触发错误
print('z = ',point1.z)

输出结果

('x = ', 10)
('y = ', -5)
('z = ', 0)
--删除 z 属性后--
('x = ', 10)
('y = ', -5)
Traceback (most recent call last):
  File "test.py", line 22, in <module>
    print('z = ',point1.z)
AttributeError: Coordinate instance has no attribute 'z'

class dict(**kwarg)

class dict(mapping, **kwarg)

class dict(iterable, **kwarg)

创建一个新的字典。

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:

d = {key1 : value1, key2 : value2 }

键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。

>>> dict = {'a': 1, 'b': 2, 'b': '3'}
>>> dict['b']
'3'

>>> dict
{'a': 1, 'b': '3'}

创建字典

dict = {}    # 创建空字典
dict = {'a': 'lily'}

访问字典

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print(dict['Name'])
// 输出结果 Zara

如果用字典里没有的键访问数据,会输出错误

print(dict['Country'])
// 输出错误
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'Country'

如何避免

修改字典

dict['Age'] = 8        # 更新
dict['School'] = '第一中学'     # 添加

删除字典/元素

del dict['Age']     # 删除键为Age的条目
dict.clear()         # 清空字典
del dict            # 删除字典

字典内置函数 & 方法

函数 描述
cmp(dict1, dict2) 比较两个字典元素。
len(dict) 计算字典元素个数,即键的总数。
str(dict) 输出字典可打印的字符串表示。
type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型。
方法 描述
dict.clear() 删除字典内所有元素
dict.copy() 返回一个字典的浅复制
dict.fromkeys(seq[, val]) 创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值
dict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值
dict.has_key(key) 如果键在字典dict里返回true,否则返回false
dict.items() 以列表返回可遍历的(键, 值) 元组数组
dict.keys() 以列表返回一个字典所有的键
dict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
dict.update(dict2) 把字典dict2的键/值对更新到dict里
dict.values( pop(key[,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值
popitem() 随机返回并删除字典中的一对键和值。

dir([object])

函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法dir(),该方法将被调用。如果参数不包含dir(),该方法将最大限度地收集参数信息。

  • object — 对象、变量、类型。
dir()   #  获得当前模块的属性列表
dir([])    # 查看列表的方法

divmod(a, b)

把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。

>>> divmod(7, 2)
(3, 1)  # 3为商,1为余数

>>> divmod(8, 2)
(4, 0)

>>> divmod(1+2j,1+0.5j)
((1+0j), 1.5j)

enumerate(iterable, start=0)

用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

Python 2.3. 以上版本可用,2.6 添加 start 参数。

  • sequence — 一个序列、迭代器或其他支持迭代对象。
  • start — 下标起始位置。
>>> user = ['lily', 'andy', 'baby']
>>> list(enumerate(user))
[(0, 'lily'), (1, 'andy'), (2, 'baby')]

# 下标从1开始
>>> list(enumerate(user, start = 1))
[(1, 'lily'), (2, 'andy'), (3, 'baby')]
>>>

for 循环使用 enumerate

user = ['lily', 'andy', 'baby']
for i, u in enumerate(user, 1):
    print(i, u)

输出结果

1 lily
2 andy
3 baby

eval(expression[, globals[, locals]])

用来执行一个字符串表达式,并返回表达式的值。

  • expression — 表达式。
  • globals — 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
  • locals — 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
>>> x = 7
>>> eval( '3 * x')
21

>>> eval('pow(2, 2)')
4

>>> eval('2 + 2')
4

exec(object[, globals[, locals]])

执行储存在字符串或文件中的Python语句,相比于 eval,exec可以执行更复杂的 Python 代码。

  • expression — 表达式。
  • globals — 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
  • locals — 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
# 执行单行
exec 'print("hello world")'

# 执行多行
expr = """
for i in range(5):
    print(i)
"""
exec(expr)

# 执行传参
x = 10
expr = """
z = 30
sum = x + y + z
print(sum)
"""
def func():
    y = 20
    exec(expr)        # 输出: 60
    exec(expr, {'x': 1, 'y': 2})        # 输出: 33
    exec(expr, {'x': 1, 'y': 2}, {'y': 3, 'z': 4})        # 输出: 34

func()

filter(function, iterable)

用 iterable 中函数 function 返回真的那些元素,构建一个新的迭代器。iterable 可以是一个序列,一个支持迭代的容器,或一个迭代器。如果 function 是 None ,则会假设它是一个身份函数,即 iterable 中所有返回假的元素会被移除。

  • function — 判断函数。
  • iterable — 可迭代对象。
def is_odd(n):
    return n % 2 == 1

newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(list(newlist))

输出结果

[1, 3, 5, 7, 9]

class float([x])

返回从数字或字符串 x 生成的浮点数。
如果没有实参,则返回 0.0 。

  • 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])

Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。

基本语法是通过 {} 和 : 来代替以前的 %

>>>"{} {}".format("hello", "world")    # 不设置指定位置,按默认顺序
'hello world'

>>> "{0} {1}".format("hello", "world")  # 设置指定位置
'hello world'

>>> "{1} {0} {1}".format("hello", "world")  # 设置指定位置
'world hello world'

设置参数模式

>>> print("你好,我叫 {name}, 今年 {age} 岁".format(name="lily", age=28))
你好,我叫 lily, 今年 28 岁

# 通过字典设置参数
>>> user = {"name": "lily", "age": 28}
>>> print("你好,我叫 {name}, 今年 {age} 岁".format(**user))
你好,我叫 lily, 今年 28 岁

# 通过列表索引设置参数
>>> user = ['lily', 28]
>>> print("你好,我叫 {0[0]}, 今年 {0[1]} 岁".format(user))      # "0" 是必须的

数字格式

>>> print("{:.2f}".format(3.1415926));
3.14
格式 输入 输出 描述
{:.2f} 3.1415926 3.14 保留小数点后两位
{:+.2f} 3.1415926 +3.14 带符号保留小数点后两位
{:.0f} 3.1415926 3 不带小数(四舍五入)
{:0>2d} 3 03 数字补零 (填充左边, 宽度为2)
{:x<4d} 3 5xxx 数字补x (填充右边, 宽度为4)
{:,} 1000000 1,000,000 以逗号分隔的数字格式
{:.2%} 0.25 25.00% 百分比格式
{:.2e} 1000000000 1.00e+09 指数记法
{:>10d} 13 13 左对齐 (宽度为10)
{:<10d} 13 13 左对齐 (宽度为10)
{:^10d} 13 13 中间对齐 (宽度为10)
{:b} 11 1011 二进制
{:d} 11 11 十进制
{:o} 11 13 八进制
{:x}
{:#x}
{:#X}
11 b
0xb
0XB
十六进制

可以使用大括号 {} 来转义大括号

>>> print("你好,我叫 {name}, 今年 {{28}} 岁".format(name="lily"))

class frozenset([iterable])

返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。返回新的 frozenset 对象,如果不提供任何参数,默认会生成空集合。

  • iterable — 可迭代的对象,比如列表、字典、元组等等。
>>> a = frozenset(range(10))     # 生成一个新的不可变集合
>>> a
frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})

>>> b = frozenset('abcdefg')
>>> b
frozenset({'f', 'd', 'b', 'e', 'c', 'g', 'a'})

getattr(object, name[, default])

用于返回一个对象属性值。

  • object — 对象。
  • name — 字符串,对象属性。
  • default — 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError。
class User(object):
    name = 'lily'

u = User()
getattr(u, 'name')            # 获取属性 name 值

// 输出: lily

触发异常

getattr(u, 'age')

# 获取不存在属性 age 值, 触发异常
Traceback (most recent call last):
  File "test.py", line 5, in <module>
    getattr(u, 'age')            # 获取属性 age 值
AttributeError: 'User' object has no attribute 'age'

globals()

返回表示当前全局符号表的字典。这总是当前模块的字典(在函数或方法中,不是调用它的模块,而是定义它的模块)。

>>> a = 'hello world'
>>> print(globals()) # globals 函数返回一个全局变量的字典,包括所有导入的变量 (包括定义的a变量)。

hasattr(object, name)

用于判断对象是否包含对应的属性。

  • object — 对象。
  • name — 字符串,属性名。
class User(object):
    name = 'lily'

u = User()
print(hasattr(u, 'name'))         # True
print(hasattr(u, 'age'))         # False

hash(object)

用于获取取一个对象(字符串或者数值等)的哈希值。

  • object — 对象;
>>> hash('hello world')
2107571125387690180

help([object])

函数用于查看函数或模块用途的详细说明。

  • object — 对象;
>>> help('sys')             # 查看 sys 模块的帮助
>>> help('str')             # 查看 str 数据类型的帮助

>>> a = [1,2,3]
>>> help(a)                   # # 查看列表 list 帮助信息

>>> help(a.append)          # 显示list的append方法的帮助

hex(x)

将整数转换为以“0x”为前缀的小写十六进制字符串。

  • x — 10进制整数
>>> hex(255)
'0xff'

>>> hex(-42)
'-0x2a'

id(object)

用于获取对象的内存地址。

  • object — 对象;
>>> a = 'hello world
>>> id(a)
4469164848

input([prompt])

Python3.x 中 input() 函数接受一个标准输入数据,返回为 string 类型。

  • prompt: 提示信息
>>> a = input("请输入值: ")
请输入值: abc
>>> type(a)
<class 'str'>

>>> b = input("请输入值: ")
请输入值: 123
>>> type(b)
<class 'str'>

class int([x])

class int(x, base=10)

用于将一个字符串或数字转换为整型。

  • x — 字符串或数字。
  • base — 进制数,默认十进制。
>>>int()               # 不传入参数时,得到结果0
0
>>> int(3)
3
>>> int(3.6)
3
>>> int('12',16)        # 如果是带参数base的话,12要以字符串的形式进行输入,12 为 16进制
18
>>> int('0xa',16)  
10  
>>> int('10',8)  
8

isinstance(object, classinfo)

用来判断一个对象是否是一个已知的类型,类似 type()

  • type() 不会认为子类是一种父类类型,不考虑继承关系
  • isinstance() 会认为子类是一种父类类型,考虑继承关系。

如果要判断两个类型是否相同推荐使用 isinstance()

  • object — 实例对象。
  • classinfo — 可以是直接或间接类名、基本类型或者由它们组成的元组。

issubclass(class, classinfo)
用于判断参数 class 是否是类型参数 classinfo 的子类。如果 class 是 classinfo 的子类返回 True,否则返回 False。

  • class — 类。
  • classinfo — 类。
class A:
    pass
class B(A):
    pass

print(issubclass(B,A))    # 返回 True

iter(object[, sentinel])

用来生成迭代器。

  • object — 支持迭代的集合对象。
  • sentinel — 如果传递了第二个参数,则参数 object 必须是一个可调用的对象(如,函数),此时,iter 创建了一个迭代器对象,每次调用这个迭代器对象的next()方法时,都会调用 object。

len(s)

返回对象(字符、列表、元组等)长度或项目个数。

  • s — 对象。
>>> x = [1, 2, 3]
>>> len(x)             #列表元素个数
3

>>> x = 'hello'
>>> len(x)            # 字符串长度
5

class list([iterable])

用于将元组或字符串转换为列表。

  • seq — 要转换为列表的元组或字符串。
aTuple = ('Google', 'Taobao')
list1 = list(aTuple)
print ("列表元素 : ", list1)

输出

列表元素 :  ['Google', 'Taobao']

字符串

str="Hello World"
list2=list(str)
print ("列表元素 : ", list2)

输出

列表元素 :  ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']

locals()

以字典类型返回当前位置的全部局部变量。对于函数, 方法, lambda 函式, 类, 以及实现了 call 方法的类实例, 它都返回 True。

map(function, iterable, ...)

根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

  • function — 函数
  • iterable — 一个或多个序列
# 计算平方数
def square(x):
    return x ** 2

# 计算列表各个元素的评分
map(square, [1, 2, 3, 4])

输出

[1, 4, 9, 16]

多个 iterable

# 提供了两个列表,对相同位置的列表数据进行相加
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])

返回给定参数的最大值,参数可以为序列。

print(max([1, 2, 3, 4]))

print(max(1, 2, 3))

memoryview(obj)

返回给定参数的内存查看对象(Momory view)。
所谓内存查看对象,是指对支持缓冲区协议的数据进行包装,在不需要复制对象基础上允许Python代码访问。

>>>v = memoryview(bytearray("abcefg", 'utf-8'))
>>> print(v[1])
98
>>> print(v[-1])
103
>>> print(v[1:4])
<memory at 0x10f543a08>
>>> print(v[1:4].tobytes())
b'bce'

min(iterable, *[, key, default])

min(arg1, arg2, *args[, key])

返回给定参数的最小值,参数可以为序列。

next(iterator[, default])

返回迭代器的下一个项目。

  • iterator — 可迭代对象
  • default — 可选,用于设置在没有下一个元素时返回该默认值,如果不设置,又没有下一个元素则会触发 StopIteration 异常。
# 首先获得Iterator对象:
it = iter([1, 2, 3, 4, 5])
# 循环:
while True:
    try:
        # 获得下一个值:
        x = next(it)
        print(x)
    except StopIteration:
        # 遇到StopIteration就退出循环
        break

class object

返回一个没有特征的新对象。

>>> a = object()
>>> a
<object object at 0x10a20d280>

oct(x)

将一个整数转变为一个前缀为“0o”的八进制字符串。

>>> oct(8)
'0o10'
>>> oct(-56)
'-0o70'

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。
注意: 使用 open() 函数一定要保证关闭文件对象,即调用 close() 函数。

  • file: 必需,文件路径(相对或者绝对路径)。
  • mode: 可选,文件打开模式
  • buffering: 设置缓冲
  • encoding: 一般使用utf8
  • errors: 报错级别
  • newline: 区分换行符
  • closefd: 传入的file参数类型
  • opener:

mode参数有:

模式 描述
t 文本模式 (默认)。
x 写模式,新建一个文件,如果该文件已存在则会报错。
b 二进制模式。
+ 打开一个文件进行更新(可读可写)。
U 通用换行模式(不推荐)。
r 以只读方式打开文件。文件的指针将会放在文件的开头。(默认模式)。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

打开并显示文件内容

f = open("./text.txt")
content = f.read()
colse(f)
print(content)

ord(c)

ord() 函数是 chr() 函数(对于 8 位的 ASCII 字符串)的配对函数,它以一个字符串(Unicode 字符)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值。

  • c — 字符。
>>>ord('a')
97
>>> ord('€')
8364
>>>

pow(x, y[, z])

返回 x 的 y 次幂, 相当于 xy;
如果 z 存在,则对 z 取余, 相当于 x
y % z

>>> print(pow(2,3))     # 2 * 2 * 2 = 8
8
>>> print(pow(2,3, 2))     # (2 * 2 * 2) % 2  (余为0)
0
>>> print(pow(2,3, 3))     # (2 * 2 * 2) % 3  (余数为2)
2

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

用于打印输出

  • objects — 复数,表示可以一次输出多个对象。输出多个对象时,需要用 , 分隔。
  • sep — 用来间隔多个对象,默认值是一个空格。
  • end — 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。
  • file — 要写入的文件对象。
>>> print(1)        # 打印数字
1

>>> print("hello world")    # 打印字符
hello world

>>> print("a", "b")        # 打印多个字符
a b

>>> print("a""b")         # 打印多个字符 (无间隔
ab

>>> print("a", "b", sep = "+")        # 添加指定间隔的字符
a+b

class property(fget=None, fset=None, fdel=None, doc=None)

作用是在新式类中返回属性值。

  • fget — 获取属性值的函数
  • fset — 设置属性值的函数
  • fdel — 删除属性值函数
  • doc — 属性描述信息
class C:
    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.")

等价于

class C:
    def __init__(self):
        self._x = None

    @property
    def x(self):
        """I'm the 'x' property."""
        return self._x

    @x.setter
    def x(self, value):
        self._x = value

    @x.deleter
    def x(self):
        del self._x

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(5)
range(0, 5)
>>> list(range(5))
[0, 1, 2, 3, 4]
>>> for i in range(5): print(i)
... 
0
1
2
3
4

repr(object)

将对象转化为供解释器读取的形式。

>>>s = 'hello world'
>>> repr(s)
"'hello world'"

>>> dict = {'hello': 'world'};
>>> repr(dict)
"{'hello': 'world'}"
>>>

reversed(seq)

返回一个反转的迭代器(iterator)。

  • seq — 要转换的序列,可以是 tuple, string, list 或 range。
>>> str = 'hello world'
>>> print(list(reversed(str)))
['d', 'l', 'r', 'o', 'w', ' ', 'o', 'l', 'l', 'e', 'h']

>>> str = range(1, 10)
>>> print(list(reversed(str)))
[9, 8, 7, 6, 5, 4, 3, 2, 1]

round(number[, ndigits])

返回 number 舍入到小数点后 ndigits 位精度的值。 如果 ndigits 被省略或为 None,则返回最接近输入值的整数。

  • number — 数字表达式。
  • ndigits — 表示从小数点位数,其中 x 需要四舍五入,默认值为 0。
>>> print(round(100.123456789))
100
>>> print(round(100.123456789, 2))
100.12
>>> print(round(100.123456789, 8))        # 四舍五入
100.12345679

class set([iterable])

创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

  • iterable — 可迭代对象对象;
>>> x = set('hello')
>>> y = set('world')

>>> x, y            # 合并输出
({'h', 'e', 'l', 'o'}, {'o', 'w', 'r', 'd', 'l'})

>>> x & y             # 交集
{'l', 'o'}

>>> x | y             # 并集
{'h', 'o', 'w', 'r', 'd', 'e', 'l'}

>>> x - y             # 差集
{'h', 'e'}

setattr(object, name, value)

对应函数 getattr(),用于设置属性值,该属性不一定是存在的。

  • object — 对象。
  • name — 字符串,对象属性。
  • value — 属性值。
class User(object):
    name = 'lily'

u = User()
setattr(u, 'name', 'laly')        # 设置已存在的值
setattr(u, 'age', 28)            # 设置不存在的值

print("{0} 的年龄是:{1}岁".format(u.name, u.age))

输出结果:

laly 的年龄是:28岁

class slice(stop)

class slice(start, stop[, step])

实现切片对象,主要用在切片操作函数里的参数传递。

  • start — 起始位置
  • stop — 结束位置
  • step — 间距
>>> myslice = slice(5)
>>> myslice
slice(None, 5, None)

>>> arr = range(10)
>>> arr[myslice]
range(0, 5)
>>> list(arr[myslice])
[0, 1, 2, 3, 4]

sorted(iterable, *, key=None, reverse=False)

对所有可迭代的对象进行排序操作。

  • iterable — 可迭代对象。
  • key — 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  • reverse — 排序规则,True 降序 , False 升序(默认)。
arr1 = [5, 2, 3, 1, 4]
print(sorted(arr1))
// 输出: [1, 2, 3, 4, 5]

arr2 = {1: "A", 2: "B", 3: "C"}
print(sorted(arr2))
// 输出: [1, 2, 3]

arr3 = [5, 2, 3, 1, 4]
print(sorted(arr3, key = lambda x: x*-1))         // 将所有的值 乘以-1,再排序
// 输出: [5, 4, 3, 2, 1]

@staticmethod

将方法转换为静态方法。

class C(object):
    @staticmethod
    def f():
        print('hello world');

C.f();          # 静态方法无需实例化
cobj = C()
cobj.f()        # 也可以实例化后调用

class str(object='')

class str(object=b'', encoding='utf-8', errors='strict')

将对象转化为适于人阅读的形式。

>>> s = 'hello world'
>>> str(s)
'hello world'

>>> dict = {'hello': 'world'}
>>> str(dict)
"{'hello': 'world'}"

sum(iterable[, start])

对序列进行求和计算。

  • iterable — 可迭代对象,如:列表、元组、集合。
  • start — 指定相加的参数,如果没有设置这个值,默认为0。
>>>sum([0,1,2])  
3  
>>> sum((2, 3, 4), 1)        # 元组计算总和后再加 1
10
>>> sum([0,1,2,3,4], 2)      # 列表计算总和后再加 2
12

super([type[, object-or-type]])

用于调用父类(超类)的一个方法。

  • type — 类。
  • object-or-type — 类,一般是 self
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)  # 3

tuple([iterable])

将列表转换为元组。

>>> l = ['hello', 'world']
>>> t = tuple(l)
>>> t
('hello', 'world')

lass type(object)

class type(name, bases, dict)

如果你只有第一个参数则返回对象的类型,三个参数返回新的类型对象。

  • name — 类的名称。
  • bases — 基类的元组。
  • dict — 字典,类内定义的命名空间变量。
>>> type(1)
<class 'int'>

>>> type('1')
<class 'str'>

>>> type([2])
<class 'list'>

>>> type({'1'})
<class 'set'>

>>> type({'1':'a'})
<class 'dict'>

>>> class X:
...     a = 1
...
>>> X = type('X', (object,), dict(a=1))

vars([object])

返回对象object的属性和属性值的字典对象。

>>> print(vars())
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>}

>>> class X:
...     a = 1
... 
>>> print(vars(X))
{'__module__': '__main__', 'a': 1, '__dict__': <attribute '__dict__' of 'X' objects>, '__weakref__': <attribute '__weakref__' of 'X' objects>, '__doc__': None}

>>> x = X()
>>> print(vars(x))
{}

zip(*iterables)

用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。

>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> c = [4, 5, 6, 7, 8]
>>> zipped = zip(a, b)
>>> zipped
<zip object at 0x10aa57ac8>

>>> list(zipped)
[(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() 来动态载入。

  • name — 模块名

a.py 文件代码:

#!/usr/bin/env python    
#encoding: utf-8  

import os  

print ('在 a.py 文件中 %s' % id(os))

test.py 文件代码:

#!/usr/bin/env python    
#encoding: utf-8  

import sys  
__import__('a')        # 导入 a.py 模块

执行 test.py 文件,输出结果为:

在 a.py 文件中 4394716136
栏目分类全部>
腾讯云采购季云服务器一折促销