Python3内置函数

  

  以上函数从上往下,从做往右来演示。

  官方文档: https://docs.python.org/3.7/library/functions.html

abs() 函数

  描述

  abs() 函数返回数字的绝对值。

  语法

  以下是 abs() 方法的语法:

abs( x )

  参数

  x -- 数值表达式,可以是整数,浮点数,复数。

  返回值

  函数返回 x(数字)的绝对值,如果参数是一个复数,则返回它的大小。

  实例

  以下展示了使用 abs() 方法的实例:

#!/usr/bin/python3

print ("abs(-40) : ", abs(-40))
print ("abs(100.10) : ", abs(100.10))

以上实例运行后输出结果为:
abs(-40) :  40
abs(100.10) :  100.1

 

all() 函数

  描述

  all() 函数用于判断给定的可迭代参数 iterable 中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False。

  元素除了是 0、空、None、False 外都算 True。

  函数等价于:

def all(iterable):
    for element in iterable:
        if not element:
            return False
    return True

  Python 2.5 以上版本可用。

  语法

  以下是 all() 方法的语法:

  all(iterable)

  参数

  iterable -- 元组或列表。

  返回值

  如果iterable的所有元素不为0、''、False或者iterable为空,all(iterable)返回True,否则返回False;

  注意:空元组、空列表返回值为True,这里要特别注意。

  实例

  以下展示了使用 all() 方法的实例:

复制代码
>>> all(['a', 'b', 'c', 'd'])  # 列表list,元素都不为空或0
True
>>> all(['a', 'b', '', 'd'])   # 列表list,存在一个为空的元素
False
>>> all([0, 1,2, 3])          # 列表list,存在一个为0的元素
False
   
>>> all(('a', 'b', 'c', 'd'))  # 元组tuple,元素都不为空或0
True
>>> all(('a', 'b', '', 'd'))   # 元组tuple,存在一个为空的元素
False
>>> all((0, 1, 2, 3))          # 元组tuple,存在一个为0的元素
False
   
>>> all([])             # 空列表
True
>>> all(())             # 空元组
True
复制代码

 

any() 函数

  描述

  any() 函数用于判断给定的可迭代参数 iterable 是否全部为 False,则返回 False,如果有一个为 True,则返回 True。

  元素除了是 0、空、FALSE 外都算 TRUE。

  函数等价于:

def any(iterable):
    for element in iterable:
        if element:
            return True
    return False

  Python 2.5 以上版本可用。

  语法

  以下是 any() 方法的语法:

  any(iterable)

  参数

  iterable -- 元组或列表。

  返回值

  如果都为空、0、false,则返回false,如果不都为空、0、false,则返回true。

  实例

  以下展示了使用 any() 方法的实例:

复制代码
>>>any(['a', 'b', 'c', 'd'])  # 列表list,元素都不为空或0
True
 
>>> any(['a', 'b', '', 'd'])   # 列表list,存在一个为空的元素
True
 
>>> any([0, '', False])        # 列表list,元素全为0,'',false
False
 
>>> any(('a', 'b', 'c', 'd'))  # 元组tuple,元素都不为空或0
True
 
>>> any(('a', 'b', '', 'd'))   # 元组tuple,存在一个为空的元素
True
 
>>> any((0, '', False))        # 元组tuple,元素全为0,'',false
False
  
>>> any([]) # 空列表
False
 
>>> any(()) # 空元组
False
复制代码

 

ascii() 函数

  描述

  ascii() 函数类似 repr() 函数, 返回一个表示对象的字符串, 但是对于字符串中的非 ASCII 字符则返回通过 repr() 函数使用 \x, \u 或 \U 编码的字符。 生成字符串类似 Python2 版本中 repr() 函数的返回值。

  语法

  以下是 ascii() 方法的语法:

ascii(object)

  参数

  object -- 对象。

  返回值

  返回字符串。

  实例

  以下展示了使用 ascii() 方法的实例

>>> ascii('lizexiong')
"'lizexiong'"

 

bin() 函数

  描述

  bin() 返回一个整数 int 或者长整数 long int 的二进制表示。

  语法

  以下是 bin() 方法的语法:

bin(x)

  参数

  x -- int 或者 long int 数字

  返回值

  字符串。

  实例

  以下展示了使用 bin 函数的实例:

>>>bin(10)
'0b1010'
>>> bin(20)
'0b10100'

 

bool() 函数

  描述

  bool() 函数用于将给定参数转换为布尔类型,如果没有参数,返回 False。

  bool 是 int 的子类。

  语法

  以下是 bool() 方法的语法:

class bool([x])

  参数

  x -- 要进行转换的参数。

  返回值

  返回 True 或 False。

  实例

  以下展示了使用 bool 函数的实例:

复制代码
>>>bool()
False
>>> bool(0)
False
>>> bool(1)
True
>>> bool(2)
True
>>> issubclass(bool, int)  # bool 是 int 子类
True
复制代码

 

bytearray() 函数

  描述

  bytearray() 方法返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256。

  语法

  bytearray()方法语法:

class bytearray([source[, encoding[, errors]]])

  参数

  如果 source 为整数,则返回一个长度为 source 的初始化数组;

  如果 source 为字符串,则按照指定的 encoding 将字符串转换为字节序列;

  如果 source 为可迭代类型,则元素必须为[0 ,255] 中的整数;

  如果 source 为与 buffer 接口一致的对象,则此对象也可以被用于初始化 bytearray。

  如果没有输入任何参数,默认就是初始化数组为0个元素。

  返回值

  返回新字节数组。

  实例

  以下实例展示了 bytearray() 的使用方法:

>>>bytearray()
bytearray(b'')
>>> bytearray([1,2,3])
bytearray(b'\x01\x02\x03')
>>> bytearray('lizexiong', 'utf-8')
bytearray(b'lizexiong')
>>>

 

bytes 函数

  描述

  bytes 函数返回一个新的 bytes 对象,该对象是一个 0 <= x < 256 区间内的整数不可变序列。它是 bytearray 的不可变版本。

  语法

  以下是 bytes 的语法:

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

  参数

  如果 source 为整数,则返回一个长度为 source 的初始化数组;

  如果 source 为字符串,则按照指定的 encoding 将字符串转换为字节序列;

  如果 source 为可迭代类型,则元素必须为[0 ,255] 中的整数;

  如果 source 为与 buffer 接口一致的对象,则此对象也可以被用于初始化 bytearray。

  如果没有输入任何参数,默认就是初始化数组为0个元素。

  返回值

  返回一个新的 bytes 对象。

  实例

  以下展示了使用 bytes 的实例:

复制代码
>>>a = bytes([1,2,3,4])
>>> a
b'\x01\x02\x03\x04'
>>> type(a)
<class 'bytes'>
>>>
>>> a = bytes('hello','ascii')
>>>
>>> a
b'hello'
>>> type(a)
<class 'bytes'>
>>>
复制代码

 

callable() 函数

  描述

  callable() 函数用于检查一个对象是否是可调用的。如果返回 True,object 仍然可能调用失败;但如果返回 False,调用对象 object 绝对不会成功。

  对于函数、方法、lambda 函式、 类以及实现了 __call__ 方法的类实例, 它都返回 True。

  语法

  callable()方法语法:

callable(object)

  参数

  object -- 对象

  返回值

  可调用返回 True,否则返回 False。

  实例

  以下实例展示了 callable() 的使用方法:

复制代码
>>>callable(0)
False
>>> callable("lizexiong")
False
 
>>> def add(a, b):
...     return a + b
... 
>>> callable(add)             # 函数返回 True
True
>>> class A:                  #
...     def method(self):
...             return 0
... 
>>> callable(A)               # 类返回 True
True
>>> a = A()
>>> callable(a)               # 没有实现 __call__, 返回 False
False
>>> class B:
...     def __call__(self):
...             return 0
... 
>>> callable(B)
True
>>> b = B()
>>> callable(b)               # 实现 __call__, 返回 True
True
复制代码

 

chr() 函数

  描述

  chr() 用一个整数作参数,返回一个对应的字符。

  语法

  以下是 chr() 方法的语法:

chr(i)

  参数

  i -- 可以是 10 进制也可以是 16 进制的形式的数字,数字范围为 0 到 1,114,111 (16 进制为0x10FFFF)。

  返回值

  返回值是当前整数对应的 ASCII 字符。

  实例

  以下展示了使用 chr() 方法的实例:

>>>chr(0x30)
'0'
>>> chr(97) 
'a'
>>> chr(8364)
''

 

classmethod 修饰符

  描述

  classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。

  语法

  classmethod 语法:

classmethod

  参数

  无。

  返回值

  返回函数的类方法。

  实例

  以下实例展示了 classmethod 的使用方法:

复制代码
#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
class A(object):
    bar = 1
    def func1(self):  
        print ('foo') 
    @classmethod
    def func2(cls):
        print ('func2')
        print (cls.bar)
        cls().func1()   # 调用 foo 方法
 
A.func2()               # 不需要实例化

输出结果为:
func2
1
foo
复制代码

 

compile() 函数

  描述

  compile() 函数将一个字符串编译为字节代码。

  语法

  以下是 compile() 方法的语法:

compile(source, filename, mode[, flags[, dont_inherit]])

  参数

  source -- 字符串或者AST(Abstract Syntax Trees)对象。。

  filename -- 代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。

  mode -- 指定编译代码的种类。可以指定为 exec, eval, single。

  flags -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。。

  flags和dont_inherit是用来控制编译源码时的标志

  返回值

  返回表达式执行结果。

  实例

  以下展示了使用 compile 函数的实例:

复制代码
>>>str = "for i in range(0,10): print(i)" 
>>> c = compile(str,'','exec')   # 编译为字节代码对象 
>>> c
<code object <module> at 0x10141e0b0, 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
复制代码

 

complex() 函数

  描述

  complex() 函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。。

  语法

  complex 语法:

class complex([real[, imag]])

  参数说明:

  real -- int, long, float或字符串;

  imag -- int, long, float;

  返回值

  返回一个复数。

  实例

  以下实例展示了 complex 的使用方法:

复制代码
>>>complex(1, 2)
(1 + 2j)
 
>>> complex(1)    # 数字
(1 + 0j)
 
>>> complex("1")  # 当做字符串处理
(1 + 0j)
 
# 注意:这个地方在"+"号两边不能有空格,也就是不能写成"1 + 2j",应该是"1+2j",否则会报错
>>> complex("1+2j")
(1 + 2j)
复制代码

 

delattr() 函数

  描述

  delattr 函数用于删除属性。

  delattr(x, 'foobar') 相等于 del x.foobar。

  语法

  delattr 语法:

delattr(object, name)

  参数

  object -- 对象。

  name -- 必须是对象的属性。

  返回值

  无。

  实例

  以下实例展示了 delattr 的使用方法:

复制代码
#!/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'
复制代码

 

dict() 函数

  字典函数,这里就不多做解释

 

dir() 函数

  描述

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

  语法

  dir 语法:

dir([object])

  参数说明:

  object -- 对象、变量、类型。

  返回值

  返回模块的属性列表。

  实例

  以下实例展示了 dir 的使用方法:

>>>dir()   #  获得当前模块的属性列表
['__builtins__', '__doc__', '__name__', '__package__', 'arr', 'myslice']
>>> 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() 函数

  描述

  Python divmod() 函数接收两个数字类型(非复数)参数,返回一个包含商和余数的元组(a // b, a % b)。

  在 python 3.x 版本该函数不支持复数。

  函数语法

divmod(a, b)

  参数说明:

  a: 数字,非复数。

  b: 数字,非复数。

  如果参数 a 与 参数 b 都是整数,函数返回的结果相当于 (a // b, a % b)

  如果其中一个参数为浮点数时,函数返回的结果相当于 (q, a % b),q 通常是 math.floor(a / b),但也有可能是 1 ,比小,不过 q * b + a % b 的值会非常接近 a。

  如果 a % b 的求余结果不为 0 ,则余数的正负符号跟参数 b 是一样的,若 b 是正数,余数为正数,若 b 为负数,余数也为负数,并且 0 <= abs(a % b) < abs(b)。

  实例

>>> divmod(7, 2)
(3, 1)
>>> divmod(8, 2)
(4, 0)
>>> divmod(8, -2)
(-4, 0)
>>> divmod(3, 1.3)
(2.0, 0.3999999999999999)

 

enumerate() 函数

  描述

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

  语法

  以下是 enumerate() 方法的语法:

enumerate(sequence, [start=0])

  参数

  sequence -- 一个序列、迭代器或其他支持迭代对象。

  start -- 下标起始位置。

  返回值

  返回 enumerate(枚举) 对象。

  实例

  以下展示了使用 enumerate() 方法的实例:

复制代码
>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1))       # 小标从 1 开始
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

#普通的 for 循环
i = 0
seq = ['one', 'two', 'three']
for element in seq:
    print(i, seq[i])
    i += 1

输出结果为:
0 one
1 two
2 three


#for 循环使用 enumerate
seq = ['one', 'two', 'three']
for i, element in enumerate(seq):
    print(i, element)

输出结果为:
0 one
1 two
2 three
复制代码

 

eval() 函数

  描述

  eval() 函数用来执行一个字符串表达式,并返回表达式的值。

  语法

  以下是 eval() 方法的语法:

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

  参数

  expression -- 表达式。

  globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。

  locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。

  返回值

  返回表达式计算结果。

  实例

  以下展示了使用 eval() 方法的实例:

复制代码
>>>x = 7
>>> eval( '3 * x' )
21
>>> eval('pow(2,2)')
4
>>> eval('2 + 2')
4
>>> n=81
>>> eval("n + 4")
85
复制代码

 

exec 函数

  描述

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

  语法

  以下是 exec 的语法:

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

  参数

  object:必选参数,表示需要被指定的 Python 代码。它必须是字符串或 code 对象。如果 object 是一个字符串,该字符串会先被解析为一组 Python 语句,然后再执行(除非发生语法错误)。如果 object 是一个 code 对象,那么它只是被简单的执行。

  globals:可选参数,表示全局命名空间(存放全局变量),如果被提供,则必须是一个字典对象。

  locals:可选参数,表示当前局部命名空间(存放局部变量),如果被提供,可以是任何映射对象。如果该参数被忽略,那么它将会取与 globals 相同的值。

  返回值

  exec 返回值永远为 None。

  实例

  以下展示了使用 exec 的实例:

复制代码
#实例 1
>>>exec('print("Hello World")')
Hello World
# 单行语句字符串
>>> exec("print ('lizexiong.com')")
lizexiong.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



#实例 2
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()
复制代码

 

filter() 函数

  描述

  filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。

  该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

  语法

  以下是 filter() 方法的语法:

filter(function, iterable)

  参数

  function -- 判断函数。

  iterable -- 可迭代对象。

  返回值

  返回一个迭代器对象

  实例

  以下展示了使用 filter 函数的实例:

复制代码
#过滤出列表中的所有奇数:
#!/usr/bin/python3
 
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中平方根是整数的数:
#!/usr/bin/python3
 
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]
复制代码

 

float() 函数

  描述

  float() 函数用于将整数和字符串转换成浮点数。

  语法

  float()方法语法:

class float([x])

  参数

  x -- 整数或字符串

  返回值

  返回浮点数。

  实例

  以下实例展示了 float() 的使用方法:

>>>float(1)
1.0
>>> float(112)
112.0
>>> float(-123.6)
-123.6
>>> float('123')     # 字符串
123.0

 

format 格式化函数

  这个也做过很多次试验,不做演示

 

frozenset() 函数

  描述

  frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。

  语法

  frozenset() 函数语法:

class frozenset([iterable])

  参数

  iterable -- 可迭代的对象,比如列表、字典、元组等等。

  返回值

  返回新的 frozenset 对象,如果不提供任何参数,默认会生成空集合。

  实例

  以下实例展示了 frozenset() 的使用方法:

>>>a = frozenset(range(10))     # 生成一个新的不可变集合
>>> a
frozenset([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> b = frozenset('lizexiong') 
>>> b
frozenset({'e', 'i', 'l', 'z', 'x', 'o', 'n', 'g'})   # 创建不可变集合
>>>

  为什么需要冻结的集合(即不可变的集合)呢?因为在集合的关系中,有集合的中的元素是另一个集合的情况,但是普通集合(set)本身是可变的,那么它的实例就不能放在另一个集合中(set中的元素必须是不可变类型)。

  所以,frozenset提供了不可变的集合的功能,当集合不可变时,它就满足了作为集合中的元素的要求,就可以放在另一个集合中了。

 

getattr() 函数

  描述

  getattr() 函数用于返回一个对象属性值。

  语法

  getattr 语法:

getattr(object, name[, default])

  参数

  object -- 对象。

  name -- 字符串,对象属性。

  default -- 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError。

  返回值

  返回对象属性值。

  实例

  以下实例展示了 getattr 的使用方法:

复制代码
>>>class A(object):
...     bar = 1
... 
>>> a = A()
>>> getattr(a, 'bar')        # 获取属性 bar 值
1
>>> getattr(a, 'bar2')       # 属性 bar2 不存在,触发异常
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'A' object has no attribute 'bar2'
>>> getattr(a, 'bar2', 3)    # 属性 bar2 不存在,但设置了默认值
3
>>>


获取对象属性后返回值可直接使用:
>>> class A(object):        
...     def set(self, a, b):
...         x = a        
...         a = b        
...         b = x        
...         print a, b   
... 
>>> a = A()                 
>>> c = getattr(a, 'set')
>>> c(a='1', b='2')
2 1
>>>
复制代码

 

globals() 函数

  描述

  globals() 函数会以字典类型返回当前位置的全部全局变量。

  语法

  globals() 函数语法:

globals()

  参数

  无

  返回值

  返回全局变量的字典。

  实例

  以下实例展示了 globals() 的使用方法:

>>> a='lizexiong'
>>> print (globals()) # globals 函数返回一个全局变量的字典,包括所有导入的变量。
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <cl
ass '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {
}, '__builtins__': <module 'builtins' (built-in)>, 'a': 'lizexiong', 'b': frozen
set({'e', 'i', 'l', 'z', 'x', 'o', 'n', 'g'})}
>>>

 

hasattr() 函数

  描述

  hasattr() 函数用于判断对象是否包含对应的属性。

  语法

  hasattr 语法:

hasattr(object, name)

  参数

  object -- 对象。

  name -- 字符串,属性名。

  返回值

  如果对象有该属性返回 True,否则返回 False。

  实例

  以下实例展示了 hasattr 的使用方法:

复制代码
#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
class Coordinate:
    x = 10
    y = -5
    z = 0
 
point1 = Coordinate() 
print(hasattr(point1, 'x'))
print(hasattr(point1, 'y'))
print(hasattr(point1, 'z'))
print(hasattr(point1, 'no'))  # 没有该属性

输出结果:
True
True
True
False
复制代码

 

hash() 函数

  描述

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

  语法

  hash 语法:

hash(object)

  参数说明:

  object -- 对象;

  返回值

  返回对象的哈希值。

  实例

  以下实例展示了 hash 的使用方法:

复制代码
>>>hash('test')            # 字符串
2314058222102390712
>>> hash(1)                 # 数字
1
>>> hash(str([1,2,3]))      # 集合
1335416675971793195
>>> hash(str(sorted({'1':1}))) # 字典
7666464346782421378
>>>

hash() 函数可以应用于数字、字符串和对象,不能直接应用于 list、set、dictionary。
在 hash() 对对象使用时,所得的结果不仅和对象的内容有关,还和对象的 id(),也就是内存地址有关。

class Test:
    def __init__(self, i):
        self.i = i
for i in range(10):
    t = Test(1)
    print(hash(t), id(t))
输出结果:

(277855628, 4445690048)
(277855637, 4445690192)
(277855628, 4445690048)
(277855637, 4445690192)
(277855628, 4445690048)
(277855637, 4445690192)
(277855628, 4445690048)
(277855637, 4445690192)
(277855628, 4445690048)
(277855637, 4445690192)
复制代码

 

help() 函数

  描述

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

  语法

  help 语法:

help([object])

  参数说明:

  object -- 对象;

  返回值

  返回对象帮助信息。

  实例

  以下实例展示了 help 的使用方法:

复制代码
>>>help('sys')             # 查看 sys 模块的帮助
……显示帮助信息……
 
>>>help('str')             # 查看 str 数据类型的帮助
……显示帮助信息……
 
>>>a = [1,2,3]
>>>help(a)                 # 查看列表 list 帮助信息
……显示帮助信息……
 
>>>help(a.append)          # 显示list的append方法的帮助
……显示帮助信息……
复制代码

 

hex() 函数

  描述

  hex() 函数用于将一个指定数字转换为 16 进制数。

  语法

  hex 语法:

hex(x)

  参数说明:

  x -- 一个整数

  返回值

  返回一个字符串,以 0x 开头。

  实例

  以下实例展示了 hex 的使用方法:

>>>hex(255)
'0xff'
>>> hex(-42)
'-0x2a'
>>> hex(12)
'0xc'
>>> type(hex(12))
<class 'str'>      # 字符串

 

id() 函数

  描述

  id() 函数返回对象的唯一标识符,标识符是一个整数。

  CPython 中 id() 函数用于获取对象的内存地址。

  语法

  id 语法:

id([object])

  参数说明:

  object -- 对象。

  返回值

  返回对象的内存地址。

  实例

  以下实例展示了 id 的使用方法:

>>> a='lizexiong'
>>> id(a)
41491632
>>> b=1
>>> id(b)
8790933404736

 

input() 函数

  接收用户的输入,这个接受一个标准输入数据,返回为 string 类型。这个也不做过多解释

 

int() 函数

  描述

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

  语法

  以下是 int() 方法的语法:

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() 函数

  描述

  isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。

  isinstance() 与 type() 区别:

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

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

  语法

  以下是 isinstance() 方法的语法:

isinstance(object, classinfo)

  参数

  object -- 实例对象。

  classinfo -- 可以是直接或间接类名、基本类型或者由它们组成的元组。

  返回值

  如果对象的类型与参数二的类型(classinfo)相同则返回 True,否则返回 False。

  实例

  以下展示了使用 isinstance 函数的实例:

>>>a = 2
>>> isinstance (a,int)
True
>>> isinstance (a,str)
False
>>> isinstance (a,(str,int,list))    # 是元组中的一个返回 True
True

  type() 与 isinstance()区别:

复制代码
class A:
    pass
 
class B(A):
    pass
 
isinstance(A(), A)    # returns True
type(A()) == A        # returns True
isinstance(B(), A)    # returns True
type(B()) == A        # returns False
复制代码

 

issubclass() 函数

  描述

  issubclass() 方法用于判断参数 class 是否是类型参数 classinfo 的子类。

  语法

  以下是 issubclass() 方法的语法:

issubclass(class, classinfo)

  参数

  class -- 类。

  classinfo -- 类。

  返回值

  如果 class 是 classinfo 的子类返回 True,否则返回 False。

  实例

  以下展示了使用 issubclass 函数的实例:

复制代码
#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
class A:
    pass
class B(A):
    pass
    
print(issubclass(B,A))    # 返回 True
复制代码

 

iter() 函数

  描述

  iter() 函数用来生成迭代器。

  语法

  以下是 iter() 方法的语法:

iter(object[, sentinel])

  参数

  object -- 支持迭代的集合对象。

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

  打开模式

  返回值

  迭代器对象。

  实例

>>>lst = [1, 2, 3]
>>> for i in iter(lst):
...     print(i)
... 
1
2
3

 

len()方法

  描述

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

  语法

  len()方法语法:

len( s )

  参数

  s -- 对象。

  返回值

  返回对象长度。

  实例

  以下实例展示了 len() 的使用方法:

复制代码
>>> str="lizexiong"
>>> len(str)
9
>>> l = [1,2,3,4,5]
>>> len(l)
5
>>> dic={'k1':'v1'}
>>> len(dic)
1
复制代码

 

list()方法

  描述

  list() 方法用于将元组或字符串转换为列表。

  注:元组与列表是非常类似的,区别在于元组的元素值不能修改,元组是放在括号中,列表是放于方括号中。

  语法

  list()方法语法:

list( seq )

  参数

  seq -- 要转换为列表的元组或字符串。

  返回值

  返回列表。

  实例

  以下实例展示了 list()函数的使用方法:

复制代码
#!/usr/bin/python3

aTuple = (123, 'Google', 'lizexiong', 'Taobao')
list1 = list(aTuple)
print ("列表元素 : ", list1)

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

以上实例输出结果如下:
列表元素 :  [123, 'Google', 'lizexiong', 'Taobao']
列表元素 :  ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
复制代码

 

locals() 函数

  描述

  locals() 函数会以字典类型返回当前位置的全部局部变量。

  对于函数, 方法, lambda 函式, 类, 以及实现了 __call__ 方法的类实例, 它都返回 True。

  语法

  locals() 函数语法:

locals()

  参数

  无

  返回值

  返回字典类型的局部变量。

  实例

  以下实例展示了 locals() 的使用方法:

>>>def lizexiong(arg):    # 两个局部变量:arg、z
...     z = 1
...     print (locals())
... 
>>> lizexiong(5)
{'z': 1, 'arg': 5}      # 返回一个名字/值对的字典
>>>

 

map() 函数

  描述

  map() 函数会根据提供的函数对指定序列做映射。

  第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

  语法

  以下是 map() 方法的语法:

map(function, iterable, ...)

  参数

  function -- 函数

  iterable -- 一个或多个序列

  返回值

  返回一个迭代器。

  实例

  以下实例展示了 map() 的使用方法:

复制代码
>>> def square(x) :         # 计算平方数
...     return x ** 2
...
>>> map(square, [1,2,3,4,5])    # 计算列表各个元素的平方
<map object at 0x100d3d550>     # 返回迭代器
>>> list(map(square, [1,2,3,4,5]))   # 使用 list() 转换为列表
[1, 4, 9, 16, 25]
>>> list(map(lambda x: x ** 2, [1, 2, 3, 4, 5]))   # 使用 lambda 匿名函数
[1, 4, 9, 16, 25]
>>>
复制代码

 

max() 函数

  描述

  max() 方法返回给定参数的最大值,参数可以为序列。

  语法

  以下是 max() 方法的语法:

max( x, y, z, .... )

  参数

  x -- 数值表达式。

  y -- 数值表达式。

  z -- 数值表达式。

  返回值

  返回给定参数的最大值。

  实例

  以下展示了使用 max() 方法的实例:

复制代码
#!/usr/bin/python3

print ("max(80, 100, 1000) : ", max(80, 100, 1000))
print ("max(-20, 100, 400) : ", max(-20, 100, 400))
print ("max(-80, -20, -10) : ", max(-80, -20, -10))
print ("max(0, 100, -400) : ", max(0, 100, -400))

以上实例运行后输出结果为:
max(80, 100, 1000) :  1000
max(-20, 100, 400) :  400
max(-80, -20, -10) :  -10
max(0, 100, -400) :  100
复制代码

 

memoryview() 函数

  描述

  memoryview() 函数返回给定参数的内存查看对象(memory view)。

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

  语法

  memoryview 语法:

memoryview(obj)

  参数说明:

  obj -- 对象

  返回值

  返回元组列表。

  实例

  以下实例展示了 memoryview 的使用方法:

复制代码
#Python2.x 应用:
>>>v = memoryview('abcefg')
>>> v[1]
'b'
>>> v[-1]
'g'
>>> v[1:4]
<memory at 0x77ab28>
>>> v[1:4].tobytes()
'bce'


#Python3.x 应用:
>>>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() 函数

  描述

  min() 方法返回给定参数的最小值,参数可以为序列。

  语法

  以下是 min() 方法的语法:

min( x, y, z, .... )

  参数

  x -- 数值表达式。

  y -- 数值表达式。

  z -- 数值表达式。

  返回值

  返回给定参数的最小值。

  实例

  以下展示了使用 min() 方法的实例:

复制代码
#!/usr/bin/python3

print ("min(80, 100, 1000) : ", min(80, 100, 1000))
print ("min(-20, 100, 400) : ", min(-20, 100, 400))
print ("min(-80, -20, -10) : ", min(-80, -20, -10))
print ("min(0, 100, -400) : ", min(0, 100, -400))

以上实例运行后输出结果为:
min(80, 100, 1000) :  80
min(-20, 100, 400) :  -20
min(-80, -20, -10) :  -80
min(0, 100, -400) :  -400
复制代码

 

next() 函数

  描述

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

  next() 函数要和生成迭代器的 iter() 函数一起使用。

  语法

  next 语法:

next(iterable[, default])

  参数说明:

  iterable -- 可迭代对象

  default -- 可选,用于设置在没有下一个元素时返回该默认值,如果不设置,又没有下一个元素则会触发 StopIteration 异常。

  返回值

  返回下一个项目。

  实例

  以下实例展示了 next 的使用方法:

复制代码
#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
# 首先获得Iterator对象:
it = iter([1, 2, 3, 4, 5])
# 循环:
while True:
    try:
        # 获得下一个值:
        x = next(it)
        print(x)
    except StopIteration:
        # 遇到StopIteration就退出循环
        break

输出结果为:
1
2
3
4
5


#如果传入第二个参数, 获取最后一个元素之后, 下一次next返回该默认值, 而不会抛出 StopIteration:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

it = iter([1, 2, 5, 4, 3])
while True:
    x = next(it, 'a')
    print(x)
    if x == 'a':
        break
输入结果为:

1
2
5
4
3
a
复制代码

 

oct() 函数

  描述

  oct() 函数将一个整数转换成 8 进制字符串,8 进制以 0o 作为前缀表示。

  语法

  oct 语法:

oct(x)

  参数说明:

  x -- 整数。

  返回值

  返回 8 进制字符串。

  实例

  以下实例展示了 oct 的使用方法:

>>> oct(10)
'0o12'
>>> oct(20)
'0o24'
>>> oct(15)
'0o17'

 

open() 函数

  文件操作,这里也不多说

 

ord() 函数

  描述

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

  语法

  以下是 ord() 方法的语法:

ord(c)

  参数

  c -- 字符。

  返回值

  返回值是对应的十进制整数。

  实例

  以下展示了使用 ord() 方法的实例:

>>>ord('a')
97
>>> ord('')
8364
>>>

 

pow() 函数

  描述

  pow() 方法返回 xy(x的y次方) 的值。

  语法

  以下是 math 模块 pow() 方法的语法:

import math

math.pow( x, y )

  内置的 pow() 方法

pow(x, y[, z])

  函数是计算x的y次方,如果z在存在,则再对结果进行取模,其结果等效于pow(x,y) %z

  注意:pow() 通过内置的方法直接调用,内置方法会把参数作为整型,而 math 模块则会把参数转换为 float。

  参数

  x -- 数值表达式。

  y -- 数值表达式。

  z -- 数值表达式。

  返回值

  返回 xy(x的y次方) 的值。

  实例

  以下展示了使用 pow() 方法的实例:

复制代码
#!/usr/bin/python3
import math   # 导入 math 模块

print ("math.pow(100, 2) : ", math.pow(100, 2))
# 使用内置,查看输出结果区别
print ("pow(100, 2) : ", pow(100, 2))
print ("math.pow(100, -2) : ", math.pow(100, -2))
print ("math.pow(2, 4) : ", math.pow(2, 4))
print ("math.pow(3, 0) : ", math.pow(3, 0))

以上实例运行后输出结果为:
math.pow(100, 2) :  10000.0
pow(100, 2) :  10000
math.pow(100, -2) :  0.0001
math.pow(2, 4) :  16.0
math.pow(3, 0) :  1.0
复制代码

 

print()函数

  print() 方法用于打印输出,最常见的一个函数。

  在 Python3.3 版增加了 flush 关键字参数。

  print 在 Python3.x 是一个函数,但在 Python2.x 版本不是一个函数,只是一个关键字。

  这里不做过多介绍

 

property() 函数

  描述

  property() 函数的作用是在新式类中返回属性值。

  语法

  以下是 property() 方法的语法:

class property([fget[, fset[, fdel[, doc]]]])

  参数

  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。

  如果给定 doc 参数,其将成为这个属性值的 docstring,否则 property 函数就会复制 fget 函数的 docstring(如果有的话)。

  将 property 函数用作装饰器可以很方便的创建只读属性:

class Parrot(object):
    def __init__(self):
        self._voltage = 100000
 
    @property
    def voltage(self):
        """Get the current voltage."""
        return self._voltage

  上面的代码将 voltage() 方法转化成同名只读属性的 getter 方法。

  property 的 getter,setter 和 deleter 方法同样可以用作装饰器:

复制代码
class C(object):
    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
复制代码

  这个代码和第一个例子完全相同,但要注意这些额外函数的名字和 property 下的一样,例如这里的 x。

 

range() 函数用法

  Python3 range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。

  Python3 list() 函数是对象迭代器,可以把range()返回的可迭代对象转为一个列表,返回的变量类型为列表。

  Python2 range() 函数返回的是列表。

  函数语法

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

有两个参数或三个参数的情况(第二种构造方法)::
>>>list(range(0, 30, 5))
[0, 5, 10, 15, 20, 25]
>>> list(range(0, 10, 2))
[0, 2, 4, 6, 8]
>>> list(range(0, -10, -1))
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> list(range(1, 0))
[]
>>>
>>>
复制代码

 

repr() 函数

  描述

  repr() 函数将对象转化为供解释器读取的形式。

  语法

  以下是 repr() 方法的语法:

repr(object)

  参数

  object -- 对象。

  返回值

  返回一个对象的 string 格式。

  实例

  以下展示了使用 repr() 方法的实例:

复制代码
>>> s = 'LIZEXIONG'
>>> repr(s)
"'LIZEXIONG'"
>>> dict = {'lizexiong': 'lizexiong.com', 'google': 'google.com'};
>>> repr(dict)
"{'google': 'google.com', 'lizexiong': 'lizexiong.com'}"
>>>

#repr() 方法可以将读取到的格式字符,比如换行符、制表符,转化为其相应的转义字符。
示例:
# coding=UTF-8
s="物品\t单价\t数量\n包子\t1\t2"
print(s)
print(repr(s))

运行结果:
物品    单价    数量
包子    1       2   
'物品\t单价\t数量\n包子\t1\t2'
复制代码

 

reversed 函数

  描述

  reversed 函数返回一个反转的迭代器。

  语法

  以下是 reversed 的语法:

reversed(seq)

  参数

  seq -- 要转换的序列,可以是 tuple, string, list 或 range。

  返回值

  返回一个反转的迭代器。

  实例

  以下展示了使用 tuple 的实例:

复制代码
#!/usr/bin/env python3
 
# 字符串
seqString = 'lizexiong'
print(list(reversed(seqString)))
 
# 元组
seqTuple = ('L', 'i', 'z', 'e', 'x', 'i','o','n','g')
print(list(reversed(seqTuple)))
 
# range
seqRange = range(5, 9)
print(list(reversed(seqRange)))
 
# 列表
seqList = [1, 2, 4, 3, 5]
print(list(reversed(seqList)))

以上实例输出结果为:
['g', 'n', 'o', 'i', 'x', 'e', 'z', 'i', 'L']
['g', 'n', 'o', 'i', 'x', 'e', 'z', 'i', 'L']
[8, 7, 6, 5]
[5, 3, 4, 2, 1]
复制代码

 

round() 函数

  描述

  round()方法返回浮点数 x 的四舍五入值,准确的说保留值将保留到离上一位更近的一端(四舍六入)。

  精度要求高的,不建议使用该函数。

  语法

  以下是 round() 方法的语法:

round( x [, n]  )

  参数

  x -- 数字表达式。

  n -- 表示从小数点位数,其中 x 需要四舍五入,默认值为 0。

  返回值

  返回浮点数x的四舍五入值。

  实例

  以下展示了使用 round() 方法的实例:

复制代码
#!/usr/bin/python3

print ("round(70.23456) : ", round(70.23456))
print ("round(56.659,1) : ", round(56.659,1))
print ("round(80.264, 2) : ", round(80.264, 2))
print ("round(100.000056, 3) : ", round(100.000056, 3))
print ("round(-100.000056, 3) : ", round(-100.000056, 3))

以上实例运行后输出结果为:
round(70.23456) :  70
round(56.659,1) :  56.7
round(80.264, 2) :  80.26
round(100.000056, 3) :  100.0
round(-100.000056, 3) :  -100.0

看下官网给的一个例子:
>>> round(2.675, 2) 
2.67
按我们的想法返回结果应该是 2.68,可结果却是 2.67,为什么?
这跟浮点数的精度有关。我们知道在机器中浮点数不一定能精确表达,因为换算成一串 1 和 0 后可能是无限位数的,机器已经做出了截断处理。那么在机器中保存的2.675这个数字就比实际数字要小那么一点点。这一点点就导致了它离 2.67 要更近一点点,所以保留两位小数时就近似到了 2.67。
复制代码

 

set() 函数

  描述

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

  语法

  set 语法:

class set([iterable])

  参数说明:

  iterable -- 可迭代对象对象;

  返回值

  返回新的集合对象。

  实例

  以下实例展示了 set 的使用方法:

复制代码
>>> x = set('lizexiong')
>>> y = set('google')
>>> x,y
({'n', 'o', 'e', 'i', 'x', 'l', 'g', 'z'}, {'o', 'g', 'l', 'e'})  #重复的被删除
>>> x & y                            #交集
{'o', 'g', 'l', 'e'}
>>> x | y                            #并集
{'n', 'o', 'e', 'i', 'x', 'l', 'g', 'z'}
>>> x - y                            #差集
{'x', 'z', 'i', 'n'}
复制代码

 

setattr() 函数

  描述

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

  语法

  setattr() 语法:

setattr(object, name, value)

  参数

  object -- 对象。

  name -- 字符串,对象属性。

  value -- 属性值。

  返回值

  无。

  实例

  以下实例展示了 setattr() 函数的使用方法:

  对已存在的属性进行赋值:

复制代码
>>>class A(object):
...     bar = 1
... 
>>> a = A()
>>> getattr(a, 'bar')          # 获取属性 bar 值
1
>>> setattr(a, 'bar', 5)       # 设置属性 bar 值
>>> a.bar
5
如果属性不存在会创建一个新的对象属性,并对属性赋值:

>>>class A():
...     name = "lizexiong"
... 
>>> a = A()
>>> setattr(a, "age", 28)
>>> print(a.age)
28
>>>
复制代码

 

slice() 函数

  描述

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

  语法

  slice 语法:

class slice(stop)
class slice(start, stop[, step])

  参数说明:

  start -- 起始位置

  stop -- 结束位置

  step -- 间距

  返回值

  返回一个切片对象。

  实例

  以下实例展示了 slice 的使用方法:

复制代码
>>>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() 函数

  描述

  sorted() 函数对所有可迭代的对象进行排序操作。

  sort 与 sorted 区别:

  sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。

  list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。

  语法

  sorted 语法:

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

  参数说明:

  iterable -- 可迭代对象。

  key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。

  reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

  返回值

  返回重新排序的列表。

  实例

  以下实例展示了 sorted 的最简单的使用方法:

>>> sorted([5, 2, 3, 1, 4])
[1, 2, 3, 4, 5]                      # 默认为升序

  你也可以使用 list 的 list.sort() 方法。这个方法会修改原始的 list(返回值为None)。通常这个方法不如sorted()方便-如果你不需要原始的 list,list.sort()方法效率会稍微高一些。

>>> a=[5,2,3,1,4]
>>> a.sort()
>>> a
[1,2,3,4,5]

  另一个区别在于list.sort() 方法只为 list 定义。而 sorted() 函数可以接收任何的 iterable。

>>> sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'})
[1, 2, 3, 4, 5]

  利用key进行倒序排序

>>> example_list = [5, 0, 6, 1, 2, 7, 3, 4]
>>> result_list = sorted(example_list, key=lambda x: x*-1)
>>> print(result_list)
[7, 6, 5, 4, 3, 2, 1, 0]
>>>

  要进行反向排序,也通过传入第三个参数 reverse=True:

>>> example_list = [5, 0, 6, 1, 2, 7, 3, 4]
>>> sorted(example_list, reverse=True)
[7, 6, 5, 4, 3, 2, 1, 0]

  以下是个更复杂的实例,对奖牌榜就行排序,数据里面包含了15个国家的金、银、铜数据,使用 \n 作为分隔符:

复制代码
s = "德国 10 11 16\n意大利 10 10 20\n荷兰 10 12 14\n法国 10 12 11\n英国 22 21 22\n中国 38 32 18\n日本 27 14 17\n美国 39 41 33\n俄罗斯奥委会 20 28 23\n澳大利亚 17 7 22\n匈牙利 6 7 7\n加拿大 7 6 11\n古巴 7 3 5\n巴西 7 6 8\n新西兰 7 6 7"
stodata = s.split('\n',-1)

# 使用sorted
para = {}

for line in range(len(stodata)):
    # 每一行数据
    data = stodata[line].split(' ')
    print(data)
    # 组装数据结构para={'China': [], 'Russia': []}
    para[data[0]] = [int('-' + i) for i in data[1:]]
# 开始排序(x[1]代表奖牌数目, x[0]代表国家)
new_para = sorted(para.items(), key=lambda x: (x[1], x[0]))
print()

c=[]
for i in new_para:
     c.append((i[0]))
for j in range(15):
    print(f"{(j+1):2d}  {c[j]}")

输出结果为:
['德国', '10', '11', '16']
['意大利', '10', '10', '20']
['荷兰', '10', '12', '14']
['法国', '10', '12', '11']
['英国', '22', '21', '22']
['中国', '38', '32', '18']
['日本', '27', '14', '17']
['美国', '39', '41', '33']
['俄罗斯奥委会', '20', '28', '23']
['澳大利亚', '17', '7', '22']
['匈牙利', '6', '7', '7']
['加拿大', '7', '6', '11']
['古巴', '7', '3', '5']
['巴西', '7', '6', '8']
['新西兰', '7', '6', '7']

 1  美国
 2  中国
 3  日本
 4  英国
 5  俄罗斯奥委会
 6  澳大利亚
 7  荷兰
 8  法国
 9  德国
10  意大利
11  加拿大
12  巴西
13  新西兰
14  古巴
15  匈牙利

sorted 的应用,也可以通过 key 的值来进行数组/字典的排序,比如:

array = [{"age":20,"name":"a"},{"age":25,"name":"b"},{"age":10,"name":"c"}]
array = sorted(array,key=lambda x:x["age"])
print(array)
输出结果:

[{'age': 10, 'name': 'c'}, {'age': 20, 'name': 'a'}, {'age': 25, 'name': 'b'}]
复制代码

 

staticmethod() 函数

  python staticmethod 返回函数的静态方法。

  该方法不强制要求传递参数,如下声明一个静态方法:

class C(object):
    @staticmethod
    def f(arg1, arg2, ...):
        ...

  以上实例声明了静态方法 f,从而可以实现实例化使用 C().f(),当然也可以不实例化调用该方法 C.f()。

  函数语法

staticmethod(function)

  参数说明:

  无

  实例

复制代码
#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
class C(object):
    @staticmethod
    def f():
        print('lizexiong');
 
C.f();          # 静态方法无需实例化
cobj = C()
cobj.f()        # 也可以实例化后调用
以上实例输出结果为:

lizexiong
lizexiong
复制代码

 

str() 函数

  描述

  str() 函数将对象转化为适于人阅读的形式。

  语法

  以下是 str() 方法的语法:

class str(object='')

  参数

  object -- 对象。

  返回值

  返回一个对象的string格式。

  实例

  以下展示了使用 str() 方法的实例:

>>>s = 'LIZEXIONG'
>>> str(s)
'LIZEXIONG'
>>> dict = {'lizexiong': 'lizexiong.com', 'google': 'google.com'};
>>> str(dict)
"{'google': 'google.com', 'lizexiong': 'lizexiong.com'}"
>>>

 

sum() 函数

  描述

  sum() 方法对序列进行求和计算。

  语法

  以下是 sum() 方法的语法:

sum(iterable[, start])

  参数

  iterable -- 可迭代对象,如:列表、元组、集合。

  start -- 指定相加的参数,如果没有设置这个值,默认为0。

  返回值

  返回计算结果。

  实例

  以下展示了使用 sum 函数的实例:

>>>sum([0,1,2])  
3  
>>> sum((2, 3, 4), 1)        # 元组计算总和后再加 1
10
>>> sum([0,1,2,3,4], 2)      # 列表计算总和后再加 2
12

 

super() 函数

  描述

  super() 函数是用于调用父类(超类)的一个方法。

  super() 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。

  MRO 就是类的方法解析顺序表, 其实也就是继承父类方法时的顺序表。

  语法

  以下是 super() 方法的语法:

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

  参数

  type -- 类。

  object-or-type -- 类,一般是 self

  Python3.x 和 Python2.x 的一个区别是: Python 3 可以使用直接使用 super().xxx 代替 super(Class, self).xxx :

复制代码
Python3.x 实例:
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

Python2.x 实例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
class A(object):   # Python2.x 记得继承 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)  # 3
复制代码

  返回值

  无。

  实例

  以下展示了使用 super 函数的实例:

复制代码
#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
class FooParent(object):
    def __init__(self):
        self.parent = 'I\'m the parent.'
        print ('Parent')
    
    def bar(self,message):
        print ("%s from Parent" % message)
 
class FooChild(FooParent):
    def __init__(self):
        # super(FooChild,self) 首先找到 FooChild 的父类(就是类 FooParent),然后把类 FooChild 的对象转换为类 FooParent 的对象
        super(FooChild,self).__init__()    
        print ('Child')
        
    def bar(self,message):
        super(FooChild, self).bar(message)
        print ('Child bar fuction')
        print (self.parent)
 
if __name__ == '__main__':
    fooChild = FooChild()
    fooChild.bar('HelloWorld')


执行结果:
Parent
Child
HelloWorld from Parent
Child bar fuction
I'm the parent.
复制代码

 

tuple函数

  描述

  tuple 函数将可迭代系列(如列表)转换为元组。

  语法

  以下是 tuple 的语法:

tuple( iterable )

  参数

  iterable -- 要转换为元组的可迭代序列。

  返回值

  返回元组。

  实例

  以下展示了使用 tuple 的实例:

>>>list1= ['Google', 'Taobao', 'lizexiong', 'Baidu']
>>> tuple1=tuple(list1)
>>> tuple1
('Google', 'Taobao', 'lizexiong', 'Baidu')

 

type()

  这个用法也比较简单,略过了

 

vars() 函数

  描述

  vars() 函数返回对象object的属性和属性值的字典对象。

  语法

  vars() 函数语法:

vars([object])

  参数

  object -- 对象

  返回值

  返回对象object的属性和属性值的字典对象,如果没有参数,就打印当前调用位置的属性和属性值 类似 locals()。

  实例

  以下实例展示了 vars() 的使用方法:

复制代码
>>> print (vars())
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <cl
ass '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {
}, '__builtins__': <module 'builtins' (built-in)>}
>>> class Test:
...   a=1
...
>>> print (vars(Test))
{'__module__': '__main__', 'a': 1, '__dict__': <attribute '__dict__' of 'Test' o
bjects>, '__weakref__': <attribute '__weakref__' of 'Test' objects>, '__doc__':
None}
>>> test = Test()
>>> print (vars(test))
{}
复制代码

  vars 的一个用法是动态生成类成员。

复制代码
# 来自 Python 官方文档 enum 模块的例子
from datetime import timedelta
from enum import Enum
class Period(timedelta, Enum):
    "different lengths of time"
    _ignore_ = 'Period i'
    Period = vars()
    for i in range(367):
        Period['day_%d' % i] = i

print(Period.day_5.value)
# 5 days, 0:00:00
这里的 vars 表示的是类定义内部的局部作用域,相当于分别执行下面这些代码:

class Period(timedelta, Enum):
    "different lengths of time"
    day_1 = timedelta(1)
    day_2 = timedelta(2)
    ...
    day_366 = timedelta(366)
由于类定义内部是单独的作用域,因此用 globals 或者 locals 达不到相同的效果,而在类定义中,因为类名称还不可用,因此也无法用 setattr 实现。
复制代码

 

zip() 函数

  描述

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

  我们可以使用 list() 转换来输出列表。

  如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

  zip 方法在 Python 2 和 Python 3 中的不同:在 Python 2.x zip() 返回的是一个列表。

  语法

  zip 语法:

zip([iterable, ...])

  参数说明:

  iterabl -- 一个或多个迭代器;

  返回值

  返回一个对象。

  实例

  以下实例展示了 zip 的使用方法:

复制代码
>>> 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__() 函数

  描述

  __import__() 函数用于动态加载类和函数 。

  如果一个模块经常变化就可以使用 __import__() 来动态载入。

  语法

  __import__ 语法:

__import__(name[, globals[, locals[, fromlist[, level]]]])

  参数说明:

  name -- 模块名

  返回值

  返回元组列表。

  实例

  以下实例展示了 __import__ 的使用方法:

复制代码
#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
复制代码

 

reload() 函数

  描述

  reload() 用于重新载入之前载入的模块。

  在 Python2.x 版本中 reload() 是内置函数,可以直线使用。在 Python2.x ~ Python3.3 版本移到 imp 包中(Python2.x 也可以导入 imp 包使用),Python3.4 之后到版本移到了 importlib 包中。

  语法

  Python2.x ~ Python3.3 之前版本:

import imp
imp.reload(module)

  或

from imp import reload
reload(module)

  Python3.4 之后到版本:

import importlib
importlib.reload(module)

  或

from importlib import reload
reload(module)

  参数

  module -- 模块对象。

  返回值

  返回模块对象。

  实例

  以下实例展示了 reload() 的使用方法。

  实例 1

重新载入 sys 模块
>>> import sys, importlib
>>> importlib.reload(sys)
<module 'sys' (built-in)>

  实例 2

  首先我们在当前目录下创建一个 lizexiong.py :

lizexiong.py 文件
# lizexiong.py 文件测试代码
site = "LIZEXIONG"

  在当前目录下启动 Python 交互式命令窗口:

>>>import lizexiong
>>> lizexiong.site
'LIZEXIONG'

  然后在另外一个窗口编辑 lizexiong.py 文件(不要关闭以上的 Python 交互式命令窗口),修改为以下代码:

修改后的 lizexiong.py 文件
# lizexiong.py 文件测试代码
site = "GOOGLE"

  然后回到 Python 交互式命令窗口:

>>> lizexiong.site    # 输出结果没有变化
'LIZEXIONG'
>>> from importlib import reload  # Python 3.4+
>>> reload(lizexiong)    # 重新载入修改后的 lizexiong.py 文件
<module 'lizexiong' from '/Users/lizexiong/lizexiong-test/lizexiong.py'>
>>> lizexiong.site    # 输出结果正常了
'GOOGLE'

 

posted @   小家电维修  阅读(41)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
历史上的今天:
2021-05-08 Redis i/o timeout
点击右上角即可分享
微信分享提示
目 录 X

abs() 函数

all() 函数

any() 函数

ascii() 函数

bin() 函数

bool() 函数

bytearray() 函数

bytes 函数

callable() 函数

chr() 函数

classmethod 修饰符

compile() 函数

complex() 函数

delattr() 函数

dict() 函数

dir() 函数

divmod() 函数

enumerate() 函数

eval() 函数

exec 函数

filter() 函数

float() 函数

format 格式化函数

frozenset() 函数

getattr() 函数

globals() 函数

hasattr() 函数

hash() 函数

help() 函数

hex() 函数

id() 函数

input() 函数

int() 函数

isinstance() 函数

issubclass() 函数

iter() 函数

len()方法

list()方法

locals() 函数

map() 函数

max() 函数

memoryview() 函数

min() 函数

next() 函数

oct() 函数

open() 函数

ord() 函数

pow() 函数

print()函数

property() 函数

range() 函数用法

repr() 函数

reversed 函数

round() 函数

set() 函数

setattr() 函数

slice() 函数

sorted() 函数

staticmethod() 函数

str() 函数

sum() 函数

super() 函数

tuple函数

type()

vars() 函数

zip() 函数

__import__() 函数

reload() 函数