LeaCoder

Python3内置函数

2019-04-21
leacoder

Python Standard Library based on Python 3.7.3 https://docs.python.org/3/library/

Python标准库 - 内置函数

Link: https://docs.python.org/3/library/functions.html

说明 print 后的 # 注释为输出和相关说明,包含所有 Python3.7.3 官方文档中的内置函数

GitHub Code : Built-in Functions.py

abs(x)

'''
@Description: 
    abs(x) 函数返回数字的绝对值 
@Param: 
    x -- 数值表达式。
@Return: 
    函数返回x(数字)的绝对值。
'''
# abs(x) 
print ("abs(-45) : ", abs(-45)) # abs(-45) :  45
print ("abs(100.12) : ", abs(100.12))   # abs(-45) :  45
print ("abs(complex(2,-2)) : ", abs(complex(2,-2))) # abs(complex(2,-2)) :  2.8284271247461903
# abs(x)  End

all(iterable)

'''
@Description: 
    all() 函数用于判断给定的可迭代参数 iterable 中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False。
    元素除了是 0、空、None、False 外都算 True。
@Param: 
    iterable -- 元组或列表。
@Return: 
    如果iterable的所有元素不为0、''、False或者iterable为空,all(iterable)返回True,否则返回False;
    注意:空元组、空列表返回值为True,这里要特别注意。
等价于
    def all(iterable):
        for element in iterable:
            if not element:
                return False
        return True
'''
# all(iterable)
print(all(['a', 'b', 'c', 'd']))    # True
print(all(['a', 'b', '', 'd']))     # False
print(all([0, 1, 2, 3]))    # False
print(all((0, 1, 2, 3)))    # False
print(all([]))  # True
print(all(()))  # True
# all(iterable) End

any(iterable)

'''
@Description: 
    any() 函数用于判断给定的可迭代参数 iterable 是否全部为 False,则返回 False,如果有一个为 True,则返回 True。
    元素除了是 0、空、FALSE 外都算 TRUE。
@Param: 
    iterable -- 元组或列表。
@Return: 
    如果都为空、0、false,则返回false,如果不都为空、0、false,则返回true。

等价于:
    def any(iterable):
        for element in iterable:
            if element:
                return True
        return False
'''
# any(iterable)
print(any(['a', 'b', '', 'd']) )    # True
print(any([0, '', False]) ) # False
print(any((0, '', False)))  # False
print(any([]))  # False
print(any(()))  # False
# any(iterable) End

ascii(object)

'''
@Description:  
    调用对象的__repr__()方法,获得该方法的返回值.
@Param: 
@Return: 
    返回一个包含对象的可打印表示的字符串
'''
# ascii(object)
print(ascii('!@#$%^1234abcvn\\\n')) # '!@#$%^1234abcvn\\\n'
# ascii(object) End

bin(x)

'''
@Description: 
    bin() 返回一个整数 int 或者长整数 long int 的二进制表示.。
@Param: 
    x -- int 或者 long int 数字
    如果x不是Python int对象,则必须定义一个返回整数的__index __()方法。
@Return: 
    字符串。
'''
# bin(x)
print(bin(10))  # 0b1010
print(bin(-10)) # -0b1010
# print(bin(-3.1415926))  # TypeError: 'float' object cannot be interpreted as an integer
class Test:
    def __init__(self,x):
        self.intdata = x
    def __index__(self):
        return int(self.intdata)
test = Test(-3.1415926)
print(bin(test))    # -0b11
# bin(x) End

class bool([x])

'''
@Description: 
    bool() 函数用于将给定参数转换为布尔类型,如果没有参数,返回 False。
    bool 是 int 的子类。
@Param: 
    x -- 要进行转换的参数。
@Return: 
    返回 Ture 或 False。
'''
# class bool([x])
print(bool())   # False
print(bool(0))  # False
print(bool(2))  # True
print(issubclass(bool, int))    # True
# class bool([x]) End

breakpoint(*args, **kws)

'''
@Description: 
    3.7新增
    此函数会将您置于调试器中在你放置位置
    具体来说,它调用sys.breakpointhook(),直接传递args和kws。
    默认情况下,sys.breakpointhook()调用pdb.set_trace()期望没有参数。
@Param: 
@Return: 
'''
# breakpoint(*args, **kws)
breakpoint()
print("Here is a break point") # 在这里暂停 Here is a break point
# breakpoint(*args, **kws) End

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

'''
@Description: 
    bytearray() 方法返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256。
@Param: 
    如果 source 为整数,则返回一个长度为 source 的初始化数组;
    如果 source 为字符串,则按照指定的 encoding 将字符串转换为字节序列;
    如果 source 为可迭代类型,则元素必须为[0 ,255] 中的整数;
    如果 source 为与 buffer 接口一致的对象,则此对象也可以被用于初始化 bytearray。
    如果没有输入任何参数,默认就是初始化数组为0个元素。
@Return: 
    新字节数组。
'''
# class bytearray([source[, encoding[, errors]]])
print(bytearray())  # bytearray(b'')
print(bytearray([1,2,3]))   # bytearray(b'')
print(len(bytearray([1,2,3])))  # 3
tmpstr = bytearray('leacoder', 'utf-8')
print(tmpstr)   #bytearray(b'')
print(len(tmpstr)) # 8
tmpstr[0] = ord('d') # 它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值
print(tmpstr) #  bytearray(b'deacoder')  d 的 ascii 为 100
# class bytearray([source[, encoding[, errors]]]) End

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

'''
@Description:
    bytes是bytearray的不可变版本
@Param: 

@Return: 
    返回一个新的“字节”对象,它是一个不可变的整数序列,范围为0 <= x <256。
'''
# class bytes([source[, encoding[, errors]]])
print(bytes())  # bytearray(b'')
print(bytes([1,2,3]))   # bytearray(b'')
print(len(bytes([1,2,3])))  # 3
tmpstr = bytes('leacoder', 'utf-8')
print(tmpstr)   #bytearray(b'')
print(len(tmpstr)) # 8
# tmpstr[0] = ord('d') # 'bytes' object does not support item assignment  'bytes'对象不支持项目分配
# class bytes([source[, encoding[, errors]]]) End

callable(object)

'''
@Description:
    callable() 函数用于检查一个对象是否是可调用的。如果返回 True,object 仍然可能调用失败;但如果返回 False,调用对象 object 绝对不会成功。
    对于函数、方法、lambda 函式、 类以及实现了 __call__ 方法的类实例, 它都返回 True。
@Param: 
    object -- 对象
@Return: 
    可调用返回 True,否则返回 False。
'''
# callable(object)
print(callable(0))  # False
print(callable('leacock'))  # False
print(callable(lambda x, y: x + y)) # True
def add( x, y):
    return x + y
print(callable(add))    # True

class A:
    def func(self):
        return 0
print(callable(A))  # True
a = A() # A类的实例
print(callable(a))  # False
class B:
    def __call__(self):
        return
print(callable(B))  # True
b = B() # B类的实例
print(callable(b))  # True
# callable(object) End

chr(i)

'''
@Description: 
    chr(i) 返回表示Unicode代码点为整数i的字符的字符串。
    这是ord()的反转。
@Param: 
    i -- 可以是10进制也可以是16进制的形式的数字。参数的有效范围是0到1,114,111(基数为16的0x10FFFF)。如果i超出该范围,则会引发ValueError。
@Return: 
    返回值是当前整数对应的 ASCII 字符。
'''
# chr(i)
print(chr(0x30), chr(0x31), chr(0x61))  # 0 1 a
print(chr(48), chr(49), chr(97) )   # 0 1 a
print(chr(0o60), chr(0o61), chr(0o141) )   # 0 1 a
print(chr(0b110000), chr(0b110001), chr(0b1100001) )   # 0 1 a
# print(chr(1114112)) # ValueError: chr() arg not in range(0x110000)
# chr(i) End

@classmethod

'''
@Description: 
    classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。
@Param: 
@Return: 
    返回函数的类方法。
'''
# @classmethod
class C(object):
    bar = 1
    def func1(self):  
        print ('foo') 
        print (self.bar)
    @classmethod
    def func2(cls):
        print ('func2')
        print (cls.bar)
        cls().func1()   
 
C.func2() # 不需要实例化   func2    1   foo     1
# @classmethod End

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

'''
@Description: 
    compile() 将source编译为代码或AST对象。代码对象可以由exec()或eval()执行。 source可以是普通字符串,字节字符串或AST对象
@Param: 
    source -- 字符串或者AST(Abstract Syntax Trees)对象。。
    filename -- 代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。
    mode -- 指定编译代码的种类。可以指定为 exec, eval, single。
    flags -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。。
    flags和dont_inherit是用来控制编译源码时的标志
    optimize  -- 参数optimize指定编译器的优化级别;
@Return: 
    返回表达式执行结果。
'''
# compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)
strtmp = "for i in range(0,10): print(i)" 
c = compile(strtmp,'','exec')   # 编译为字节代码对象 
print(c)    # <code object <module> at 0x7f11505769c0, file "", line 1>
exec(c)  # 0 1 2 3 4 5 6 7 8 9
strtmp = "3 * 4 + 5"
a = compile(strtmp,'','eval')
print(eval(a))  # 17
# compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1) End

class complex([real[, imag]])

'''
@Description: 
    complex() 函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。第二个参数永远不能是字符串。
    如果省略imag,则默认为零,构造函数用作int和float之类的数字转换。如果省略两个参数,则返回0j。
@Param: 
    real -- int, long, float或字符串;
    imag -- int, long, float;
@Return: 
    返回值为real + imag * 1j的复数或将字符串或数字转换为复数。
'''
# class complex([real[, imag]])
print(complex(1, 2))    # (1+2j)
print(complex(1))   # (1+0j)
print(complex())    # 0j
print(complex("10"))    # (10+0j)
# 注意:这个地方在"+"号两边不能有空格,也就是不能写成"1 + 2j",应该是"1+2j",否则会报错
print(complex("1+2j"))  # (1+2j)
# print(complex("1 + 2j"))    # ValueError: complex() arg is a malformed string
# class complex([real[, imag]]) End

delattr(object, name)

'''
@Description: 
    delattr 函数用于删除属性。delattr(x, 'foobar') 相等于 del x.foobar。
    与setattr()相对,
@Param: 
    object -- 对象。
    name -- 必须是对象的属性。
@Return: 
'''
# delattr(object, name)
class Coordinate:
    x = 10
    y = -5
    z = 0
point1 = Coordinate() 
delattr(Coordinate, 'z')
del Coordinate.y
print('x = ',point1.x)  # x =  10
# print('y = ',point1.y)  # 触发错误    AttributeError: 'Coordinate' object has no attribute 'y'
# print('z = ',point1.z)  # 触发错误  AttributeError: 'Coordinate' object has no attribute 'z'
# delattr(object, name) End

dict()

'''
@Description: 
    dict() 函数用于创建一个字典。
    class dict(**kwarg)
    class dict(mapping, **kwarg)
    class dict(iterable, **kwarg)
@Param: 
    **kwargs -- 关键字
    mapping -- 元素的容器。
    iterable -- 可迭代对象。
@Return: 
    返回一个字典。
'''
# dict() 
print(dict())   # {}
# 关键字
print(dict(a='a', b='b', t='t'))    # {'a': 'a', 'b': 'b', 't': 't'}    
# 映射函数方式来构造字典 zip 返回 iterabl 
print(dict(zip(['one', 'two', 'three'], [1, 2, 3])))    # {'one': 1, 'two': 2, 'three': 3}  
# 可迭代对象方式来构造字典
print(dict([('one', 1), ('two', 2), ('three', 3)]))     # {'one': 1, 'two': 2, 'three': 3}
# 可迭代对象 + 关键字
print(dict([('one', 1), ('two', 2), ('three', 3)],a='a', b='b', t='t')) # {'one': 1, 'two': 2, 'three': 3, 'a': 'a', 'b': 'b', 't': 't'}
# dict()  End

dir([object])

'''
@Description: 
    dir() 函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。
    如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),该方法将最大限度地收集参数信息。
@Param: 
    object -- 对象、变量、类型。
@Return: 
    返回模块的属性列表。
'''
# dir([object])
print(dir())    #  获得当前模块的属性列表
print(dir([ ]))     # 查看列表的方法
class Shape:
    def __dir__(self):
        return ['area', 'perimeter', 'location']
print(dir(Shape())) # ['area', 'location', 'perimeter']
# dir([object]) End

divmod(a, b)

'''
@Description: 
    divmod() 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。
@Param: 
    a: 数字非复数
    b: 数字非复数    
@Return: 
    返回一个包含商和余数的元组(a // b, a % b)。
'''
# divmod(a, b)
print(divmod(10, 3))    # (3, 1)
print(divmod(10.0, 3.0))    # (3.0, 1.0)
# print(divmod(1+2j,1+0.5j))  # 报错 TypeError: can't take floor or mod of complex number.
# divmod(a, b) End

enumerate(iterable, start=0)

'''
@Description: 
    enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
@Param: 
    sequence -- 一个序列、迭代器或其他支持迭代对象。
    start -- 下标起始位置。
@Return: 
    返回 enumerate(枚举) 对象。
'''
# enumerate(iterable, start=0)
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
print(enumerate(seasons))   # <enumerate object at 0x7f897c4ada20>
print(list(enumerate(seasons))) # [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
print(list(enumerate(seasons, start=1)))    # [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
# 相当于:
def enumerate(sequence, start=0):
    n = start
    for elem in sequence:
        yield n, elem
        n += 1
# enumerate(iterable, start=0) End

eval(expression, globals=None, locals=None)

'''
@Description: 
    eval() 函数用来执行一个字符串表达式,并返回表达式的值。
    只能是单个运算表达式(注意eval不支持任意形式的赋值操作),而不能是复杂的代码逻辑,这一点和lambda表达式比较相似。
    exec()动态执行Python代码。也就是说exec可以执行复杂的Python代码,而不像eval函数那么样只能计算一个表达式的值。
@Param: 
    expression -- 表达式。
    globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
    locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
@Return: 
    返回表达式计算结果。
'''
# eval(expression, globals=None, locals=None)
x = 7
result = eval( '3 * x' )
print(result)   # 21
result = eval('pow(2,2)')
print(result)   # 4
strtmp = "for i in range(0,10): print(i)" 
# evaltest = compile(strtmp,'','eval')   # 报错 SyntaxError: invalid syntax 
evaltest = compile(strtmp,'','exec')
exec(evaltest)  # 0 1 2 3 4 5 6 7 8 9
result = exec('3 * x')
print(result)   # None
# eval(expression, globals=None, locals=None) End
# eval()函数与exec()函数的区别:
# eval()函数只能计算单个表达式的值,而exec()函数可以动态运行代码段。
# eval()函数可以有返回值,而exec()函数返回值永远为None。

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

'''
@Description: 
    exec 执行储存在字符串或文件中的 Python 语句,相比于 eval,exec可以执行更复杂的 Python 代码。
@Param: 
    object:必选参数,表示需要被指定的Python代码。
    它必须是字符串或code对象。如果object是一个字符串,该字符串会先被解析为一组Python语句,然后在执行(除非发生语法错误)。
    如果object是一个code对象,那么它只是被简单的执行。
    globals:可选参数,表示全局命名空间(存放全局变量),如果被提供,则必须是一个字典对象。
    locals:可选参数,表示当前局部命名空间(存放局部变量),如果被提供,可以是任何映射对象。如果该参数被忽略,那么它将会取与globals相同的值。
@Return: 
    exec 返回值永远为 None。
'''
# exec(object[, globals[, locals]])
# 见 eval
# exec(object[, globals[, locals]])End 

## filter(function, iterable)
```python
'''
@Description: 
    filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。
    该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
@Param: 
    function -- 判断函数。
    iterable -- 可迭代对象。
@Return: 
    返回一个迭代器对象
'''
# filter(function, iterable)
tmplist = filter(lambda n : n % 2 == 1, range(1, 11))
print(tmplist)  # <filter object at 0x7f3494520940>
print(list(tmplist))    # [1, 3, 5, 7, 9]
# filter(function, iterable) End

class float([x])

'''
@Description: 
    float() 函数用于将整数和字符串转换成浮点数。
    对于一般Python对象x,float(x)委托给x .__ float __()。
    如果没有给出参数,则返回0.0。
@Param: 
    x -- 整数或字符串
    如果参数是一个字符串,它应该包含一个十进制数字,可选地以符号开头,并且可选地嵌入在空格中。
    可选符号可以是“+”或“ - ”; “+”符号对产生的值没有影响。
    参数也可以是表示NaN(非数字)或正或负无穷大的字符串。
    在删除前导和尾随空格字符后,输入必须符合以下语法:
    sign           ::=  "+" | "-"
    infinity       ::=  "Infinity" | "inf"
    nan            ::=  "nan"
    numeric_value  ::=  floatnumber | infinity | nan
    numeric_string ::=  [sign] numeric_value
@Return: 
    返回浮点数。
'''
# class float([x])
print(float())  # 0.0
print(float('   -12345\n')) # -12345.0
print(float('-Infinity'))   # -inf
print(float('NAN')) # nan
print(float('+1E6'))    # 1000000.0
print(float('1e-003'))  # 0.001
# class float([x]) End

format(value[, format_spec])

'''
@Description: 
    将值转换为“格式化”表示,由format_spec控制。
@Param: 
@Return: 
'''
# format(value[, format_spec])
# 参见 string 库  格式字符串语法示例 Format String Syntax   https://www.jianshu.com/p/faaa48f4c511
# format(value[, format_spec]) End

class frozenset([iterable])

'''
@Description: 
    frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。
    参见 https://blog.csdn.net/lilong117194/article/details/78522459
@Param: 
    iterable -- 可迭代的对象,比如列表、字典、元组等等。
@Return: 
    返回新的 frozenset 对象,如果不提供任何参数,默认会生成空集合。
'''
# class frozenset([iterable])
a = frozenset(range(10))     # 生成一个新的不可变集合
print(a)    # frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
# a.add(10) # AttributeError: 'frozenset' object has no attribute 'add'
# class frozenset([iterable]) End

getattr(object, name[, default])

'''
@Description: 
    getattr() 函数用于返回一个对象属性值。
@Param: 
    object -- 对象。
    name -- 字符串,对象属性。
    default -- 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError。
@Return: 
    返回对象属性值。
'''
# getattr(object, name[, default])
class D(object):
    bar = 'leacoder'
d = D()
print(getattr(d, 'bar') )       # 获取属性 bar 值   
# print(getattr(a, 'bar2') )  #  报错 AttributeError: 'D' object has no attribute 'bar2'
print(getattr(d, 'bar2', '123456') )   # 属性 bar2 不存在,但设置了默认值
# getattr(object, name[, default]) End

globals()

'''
@Description: 
    globals() 函数会以字典类型返回当前位置的全部全局变量。
@Param: 
@Return: 
    返回全局变量的字典。
'''
# globals()
print(globals())
# globals() End

hasattr(object, name)

'''
@Description: 
    hasattr() 函数用于判断对象是否包含对应的属性。
@Param: 
    bject -- 对象。
    name -- 字符串,属性名。
@Return: 
    如果对象有该属性返回 True,否则返回 False。
'''
# hasattr(object, name)
class Coordinate1:
    x = 10
    y = -5
point1 = Coordinate1()   
print(hasattr(point1, 'x')) # True
print(hasattr(point1, 'y')) # True
print(hasattr(point1, 'z')) # False
# hasattr(object, name) End

hash(object)

'''
@Description: 
    hash() 用于获取取一个对象(字符串或者数值等)的哈希值。
@Param: 
    object -- 对象;
@Return: 
    返回对象的哈希值(如果有的话)。哈希值是整数。
    它们用于在字典查找期间快速比较字典键。比较相等的数字值具有相同的哈希值(即使它们具有不同的类型,如1和1.0的情况)。
'''
# hash(object)
print(hash('test'))            # 字符串 # 8918808336926749410
print(hash(str([1,2,3])))     # 集合    # -5376174432533403617
print(hash(300.0))      # 300
print(hash(300))    # 300
# hash(object) End

help([object])

'''
@Description: 
    help() 函数用于查看函数或模块用途的详细说明。
@Param: 
    object -- 对象;
@Return: 
    返回对象帮助信息。
'''
# help([object])
a = [1,2,3]
help(a.append)             # # 查看列表 list 帮助信息
# help([object]) End

hex(x)

'''
@Description: 
    hex() 函数用于将一个指定数字转换为 16 进制数。
    如果x不是Python int对象,则必须定义一个返回整数的__index __()方法。参见 bin() 
@Param: 
    x -- 一个整数
@Return: 
    返回一个字符串,以 0x 开头。
'''
# hex(x)
result = hex(255)
print(result)   # 0xff
print(type(result)) # <class 'str'>
# hex(x) End

id(object)

'''
@Description: 
    id() 函数用于返回对象的“标识”,这是一个整数,在该生命周期内保证该对象是唯一且恒定的。
@Param: 
    object -- 对象。
@Return: 
    返回对象的“标识”
'''
# id(object)
a = 'leacoder'  
print(id(a))    # 140597046261744
b = 'leacoder'
print(id(b))    # 140597046261744
# id(object) End

input([prompt])

'''
@Description: 
    input() 函数接受一个标准输入数据,返回为 string 类型。
@Param: 
    prompt: 提示信息
    如果存在prompt参数,则将其写入标准输出而不带尾随换行符。该函数从输入中读取一行,将其转换为字符串(剥离尾部换行符),然后返回该行。
    读取EOF时,会引发EOFError。
@Return: 
'''
# input([prompt])
s = input('--> ')  # 输入 leacoder  # --> leacoder
# input([prompt])

class int(x, base=10)

'''
@Description: 
    int() 函数用于将一个字符串或数字转换为整型。
    如果x定义__int __(),则int(x)返回x .__ int __()。如果x定义__trunc __(),则返回x .__ trunc __()。对于浮点数,这会截断为零。
    如果x不是数字或者给定了base,则x必须是字符串,字节或bytearray实例,表示以radix为基数的整数文字。
    可选 文字可以在前面加+或 - (之间没有空格)并且用空格包围。
@Param: 
    x -- 字符串或数字。
    base -- 进制数,默认十进制。
@Return: 
    返回整型数据。
'''
# class int(x, base=10)
print(int())   # 不传入参数时,得到结果0  # 0
print(int(3))  # 3
print(int(3.6))     # 3
print(int('12',16))     # 18
# print(int(12,16))   # 报错 TypeError: int() can't convert non-string with explicit base
# class int(x, base=10) End

isinstance(object, classinfo)

'''
@Description: 
    如果object参数是classinfo参数的实例,或者是(直接,间接或虚拟)子类的实例,则返回true。
    如果object不是给定类型的对象,则该函数始终返回false。
    如果classinfo是类型对象的元组(或递归,其他此类元组),object是其中任何类型的实例,则返回true。
    如果classinfo不是类型和元组的类型或元组,则会引发TypeError异常。
@Param: 
    object -- 实例对象。
    classinfo -- 可以是直接或间接类名、基本类型或者由它们组成的元组。
    对于基本类型来说 classinfo 可以是: int,float,bool,complex,str(字符串),list,dict(字典),set,tuple
@Return: 
'''
# isinstance(object, classinfo)
a = 2
print(isinstance (a,int))   # True
print(isinstance (a,str))   # False
print(isinstance (a,(str,int,list)))    # True
'''
isinstance() 与 type() 区别:
    type() 不会认为子类是一种父类类型,不考虑继承关系。
    isinstance() 会认为子类是一种父类类型,考虑继承关系。
如果要判断两个类型是否相同推荐使用 isinstance()。
'''
class AClass:
    pass
class BClass(AClass):
    pass
print(isinstance(AClass(), AClass)) # True
print(type(AClass()) == AClass) # True     
print(isinstance(BClass(), AClass)) # True  
print(type(BClass()) == AClass) # False     
# isinstance(object, classinfo) End

issubclass(class, classinfo)

'''
@Description: 
    如果class是classinfo的子类(直接,间接或虚拟),则返回true。
    类被认为是其自身的子类。
@Param: 
    class -- 类。
    classinfo -- 类。
    classinfo可以是类对象的元组,在这种情况下,将检查classinfo中的每个条目。
@Return: 
    如果 class 是 classinfo 的子类返回 True,否则返回 False。
'''
# issubclass(class, classinfo)
class AClass1:
    pass
class BClass1(AClass1):
    pass
print(issubclass(AClass1,AClass1))  # True
print(issubclass(BClass1,AClass1))  # True
print(issubclass(BClass1,(str,int,list,AClass1)))  # True
# issubclass(class, classinfo) End

iter(object[, sentinel])

'''
@Description: 
    iter() 函数用来生成迭代器。
@Param: 
    object -- 支持迭代的集合对象。
    sentinel -- 如果传递了第二个参数,则参数 object 必须是一个可调用的对象(如,函数),
    此时,iter 创建了一个迭代器对象,每次调用这个迭代器对象的__next__()方法时,都会调用 object。
@Return: 
    迭代器对象。
'''
# iter(object[, sentinel])
settmp = {'a':1,'b':2,'c':3}
# next(settmp)    # TypeError: 'dict' object is not an iterator
print(next(iter(settmp)))   # a
# iter(object[, sentinel]) End

len(s)

'''
@Description: 
    len() 方法返回对象(字符、列表、元组等)长度或项目个数。
@Param: 
    s -- 对象。可以是序列(例如字符串,字节,元组,列表或范围)或集合(例如字典,集合或冻结集)。
@Return: 
    返回对象长度。
'''
# len(s)
strtmp = "leacdoer"
print(len(strtmp))  # 8
l = [1,2,3,4,5]
print(len(l))   # 5
# len(s) End

class list([iterable])

'''
@Description: 
    list() 方法用于将元组或字符串转换为列表。
@Param: 
    iterable -- 要转换为列表的元组或字符串。
@Return: 
    返回列表。
'''
# class list([iterable])
strtmp="leacoder"
list2=list(strtmp)
print ("列表元素 : ", list2)    # 列表元素 :  ['l', 'e', 'a', 'c', 'o', 'd', 'e', 'r']
# class list([iterable]) End

locals()

'''
@Description: 
    locals() 函数更新并返回表示当前本地符号表的字典。
    在模块级别,locals()和globals()是相同的字典。
@Param: 
@Return: 
'''
# locals()
def funtestlocals(arg):    # 两个局部变量:arg、z
    a = 2
    print (locals()) 
funtestlocals(123)  # {'arg': 123, 'a': 2}
# locals() End

map(function, iterable, …)

'''
@Description: 
    map() 会根据提供的函数对指定序列做映射。
    第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
@Param: 
    function -- 函数
    iterable -- 一个或多个序列
    对于多个迭代,迭代器在最短的iterable耗尽时停止。
@Return: 
    迭代器。
'''
# map(function, iterable, ...)
result = map(lambda x: x ** 2, [2, 3, 4, 5])
print(result)  # 使用 lambda 匿名函数   # <map object at 0x7ff9203c2438>
print(next(result)) # 4
result = map(lambda x, y: x + y, [1,3,5,7],[2,4])
print(next(result)) # 3
print(next(result)) # 7
# print(next(result)) # StopIteration
# map(function, iterable, ...) End

max()

'''
@Description: 
    max(iterable, *[, key, default])
    max(arg1, arg2, *args[, key])
@Param: 
    如果提供了一个位置参数,则它应该是可迭代的。返回iterable中的最大项。
    如果提供了两个或多个位置参数,则返回最大的位置参数。
    当key参数不为空时,就以key的函数对象为判断的标准。
@Return: 
    返回可迭代中的最大项或两个或多个参数中的最大项。
    如果多个项是最大的,则该函数返回遇到的第一个项。
'''
# max() 
print ("max(80, 100, 1000) : ", max(80, 100, 1000)) # max(80, 100, 1000) :  1000
listtmp1 = [80, 100, 1000]
print ("max(listtmp1) : ", max(listtmp1)) # max(listtmp) :  1000
listtmp2 = [-20,200,5000,1]
print ("max(listtmp1,listtmp2) : ", max(listtmp1,listtmp2))   # max(listtmp,listtmp2) :  [80, 100, 1000]  默认以第一个进行比较
print ("max('123','32') : ", max('123','32'))   # max('123','32') :  32 以第一个进行比较
print ("max(listtmp1,listtmp2) : ", max(listtmp1,listtmp2,key = lambda x:x[1]))  #  max(listtmp1,listtmp2) :  [-20, 200, 5000, 1] key的函数对象为判断的标准。

def mymax(x):
    return -x
print (max(123, 321, key=mymax))    # 123
print (max(listtmp1, key=mymax))    # 80
# max()  End

memoryview(obj)

'''
@Description: 
    memoryview() 函数返回给定参数的内存查看对象(Momory view)。
    所谓内存查看对象,是指对支持缓冲区协议的数据进行包装,在不需要复制对象基础上允许Python代码访问。
@Param: 
    obj -- 对象
@Return: 
    返回元组列表
'''
# memoryview(obj)
# v = memoryview("abcefg")    # TypeError: memoryview: a bytes-like object is required, not 'str'
v = memoryview(bytes("abcefg",'utf-8'))
print(v[0]) # ascii   # 97  
print(v[0:1]) # <memory at 0x7f56a574c408>
print(v[0:1].tobytes()) # b'a'
print(v[1:4])   # <memory at 0x7f56a574c408>
print(v[1:4].tobytes()) # b'bce'
# memoryview(obj) End

min()

'''
@Description: 
    min(iterable, *[, key, default])
    min(arg1, arg2, *args[, key])
@Param:
    如果提供了一个位置参数,则它应该是可迭代的。返回iterable中的最小项。
    如果提供了两个或多个位置参数,则返回最小的位置参数。
    当key参数不为空时,就以key的函数对象为判断的标准。
@Return: 
    返回可迭代中的最小项或两个或多个参数中的最小项。
    如果多个项目是最小的,则该函数返回遇到的第一个项目。
'''
# min() 
print ("min(80, 100, 1000) : ", min(80, 100, 1000))     # min(80, 100, 1000) :  80
listtmp1 = [80, 100, 1000]
print ("min(listtmp1) : ", min(listtmp1))   # min(listtmp1) :  80
listtmp2 = [-20,200,5000,1]
print ("min(listtmp1,listtmp2) : ", min(listtmp1,listtmp2))   #min(listtmp1,listtmp2) :  [-20, 200, 5000, 1]  默认以第一个进行比较
print ("min('123','32') : ", min('123','32'))   # min('123','32') :  123   以第一个进行比较
print ("min(listtmp1,listtmp2) : ", min(listtmp1,listtmp2,key = lambda x:x[1]))  #  min(listtmp1,listtmp2) :  [80, 100, 1000] key的函数对象为判断的标准。

def mymin(x):
    return -x
print (min(123, 321, key=mymin))    # 321
print (min(listtmp1, key=mymin))    # 1000
# min()  End

next(iterator[, default])

'''
@Description: 
    通过调用__next __()方法从迭代器中检索下一个项。
@Param: 
    iterator -- 可迭代对象
    default -- 可选,用于设置在没有下一个元素时返回该默认值,如果不设置,又没有下一个元素则会触发 StopIteration 异常。
@Return: 
    迭代器中下一个项
'''
# next(iterator[, default])
it = iter([1, 2, 3])
# 循环:
for i in range(5):
    # 获得下一个值:
    x = next(it,'leacoder')
    print(x)    # 1 2 3 leacoder leacoder
# next(iterator[, default]) End

class object

'''
@Description:
    返回一个新的无特征对象。
    object是所有类的基础。它具有所有Python类实例共有的方法。此函数不接受任何参数。
    object没有__dict__,因此您无法将任意属性分配给对象类的实例
@Param: 
@Return: 
'''
# class object
objecttest = object()
print(objecttest)   # <object object at 0x7eff046bfa10>
print(dir(objecttest)) 
# ['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', 
# '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', 
# '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
# class object End

oct(x)

'''
@Description: 
    oct() 函数将一个整数转换成8进制字符串。
    将整数转换为前缀为“0o”的八进制字符串。结果是一个有效的Python表达式。如果x不是Python int对象,则必须定义一个返回整数的__index __()方法。
    参见 bin()
@Param: 
    x -- 整数。
@Return: 
    返回一个字符串,以 0o 开头。
'''
# oct(x)
print(oct(9))   # 0o11
# oct(x) End

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

'''
@Description: 
    open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。
    注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。
    open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)。
    pen(file, mode='r')
    参见 https://docs.python.org/3.7/library/functions.html#open
@Param: 
    file: 必需,文件路径(相对或者绝对路径)。
    mode: 可选,文件打开模式
    buffering: 设置缓冲
    encoding: 一般使用utf8
    errors: 报错级别
    newline: 区分换行符
    closefd: 传入的file参数类型
    opener:
@Return: 
'''
# open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
# f = open('test.txt')
# open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) End

ord(c)

'''
@Description: 
    ord() 函数是 chr() 函数(对于 8 位的 ASCII 字符串)的配对函数,它以一个字符串(Unicode 字符)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值。
@Param: 
    c -- 字符。
@Return: 
    返回值是对应的十进制整数。
'''
# ord(c)
print(ord('a')) #97
# ord(c) End

pow(x, y[, z])

'''
@Description: 
    返回x的y次方,如果z存在,返回 x的y次方再模z(比pow(x,y)%z更有效地计算)。两个参数形式pow(x,y)相当于使用幂运算符:x ** y。
    如果存在z,则x和y必须是整数类型,y必须是非负的
@Param: 
    x -- 数值表达式。
    y -- 数值表达式。
    z -- 数值表达式。
    参数必须具有数字类型
@Return:
'''
# pow(x, y[, z])
print( pow(100, 2))     # 10000
print( pow(100, -2))    # 0.0001
print( pow(100, 2, 3))  # 1
# print( pow(100, -2, 3))  # 报错 ValueError: pow() 2nd argument cannot be negative when 3rd argument specified
import math
print( math.pow(100, 2))    # 10000.0 和内置函数区别
# pow(x, y[, z]) End

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

'''
@Description: 
    print() 方法用于打印输出,最常见的一个函数。
@Param: 
    objects -- 复数,表示可以一次输出多个对象。输出多个对象时,需要用 , 分隔。
    sep -- 用来间隔多个对象,默认值是一个空格。
    end -- 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。
    file -- 要写入的文件对象。
    flush -- 输出是否缓冲通常由文件确定,但如果flush关键字参数为true,则强制刷新流。
@Return: 
'''
# print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
print("Hello World")    # Hello World
print("Hello","World",sep=' * ')    # Hello * World
print("Hello","World",sep=' * ',end='##\n')     # Hello * World##
print('https://docs', 'python' ,'org',sep='.')  # https://docs.python.org
# print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False) End

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

'''
@Description: 
    property() 函数的作用是在新式类中返回属性值。
@Param: 
    fget -- 获取属性值的函数
    fset -- 设置属性值的函数
    fdel -- 删除属性值函数
    doc -- 属性描述信息
@Return: 
    新式类属性。
'''
# class property(fget=None, fset=None, fdel=None, doc=None)
class E(object):
    def __init__(self):
        self._x = None
    def getxnew(self):
        print("def getxnew(self):")
        return self._x
    def setxnew(self, value):
        print("def setxnew(self, value):")
        self._x = value
    def delxnew(self):
        print("def delxnew(self):")
        del self._x
    x = property(getxnew, setxnew, delxnew, "I'm the 'x' property.")
# 如果 e 是 E的实例化, e.x 将触发 getter,e.x = value 将触发 setter , del e.x 触发 deleter。
e = E()
e.x = 123   # def setxnew(self, value):
e.x         # def getxnew(self):
del e.x     # def delxnew(self):
# 将 property 函数用作装饰器可以很方便的创建只读属性,只读属性的 getter 方法。
class F(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。
# class property(fget=None, fset=None, fdel=None, doc=None) End

range()

'''
@Description: 
    range(stop)
    range(start, stop[, step])
@Param: 
    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)   
@Return: 
    range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。
    list() 函数是对象迭代器,可以把range()返回的可迭代对象转为一个列表,返回的变量类型为列表。
'''
# range()
rangetmp = range(0,11,2)
print(rangetmp) # range(0, 11, 2)
print(list(rangetmp))   # [0, 2, 4, 6, 8, 10]
# range() End

repr(object)

'''
@Description: 
    repr() 函数将对象转化为供解释器读取的形式。
@Param:
    object -- 对象。
@Return: 
    返回一个对象的 string 格式。
'''
# repr(object)
s = 'leacoder'
print(s)    # leacoder
print(repr(s))  # 'leacoder'
dictmp = {'Author':'leacoder','Time':'2019/04/18 23:37:06'}
print(dictmp)   # {'Author': 'leacoder', 'Time': '2019/04/18 23:37:06'}
print(repr(dictmp))     # {'Author': 'leacoder', 'Time': '2019/04/18 23:37:06'}
# repr(object) End

reversed(seq)

'''
@Description: 
    reversed 函数返回一个反转的迭代器。
@Param: 
    seq -- 要转换的序列,可以是 tuple, string, list 或 range。
    seq必须是具有__reversed __()方法的对象,或者支持序列协议(__len __()方法和__getitem __()方法,整数参数从0开始)。
@Return: 
    一个反转的迭代器。
'''
# reversed(seq)
seqstr = 'leacdoer'
print(list(reversed(seqstr)))   # ['r', 'e', 'o', 'd', 'c', 'a', 'e', 'l']
seqrange = range(5, 9)
print(list(reversed(seqrange))) # [8, 7, 6, 5
# reversed(seq) End

round(number[, ndigits])

'''
@Description: 
    round() 方法返回浮点数x的四舍五入值。
    对于支持round()的内置类型,将值四舍五入为函数减去ndigits的最接近的10的倍数; 
    如果两个倍数相等,则向均匀选择进行舍入(例如,round(0.5)和round(-0.5)都是0,round(1.5)是2)。
    round()对于浮点数的行为可能会令人惊讶:例如,round(2.675,2)给出2.67而不是预期的2.68。 这不是一个错误:这是因为大多数小数部分不能完全表示为浮点数。
    有关详细信息参见 :https://docs.python.org/3.7/tutorial/floatingpoint.html#tut-fp-issues
@Param: 
    x -- 数字表达式。
    n -- 表示小数点位数,其中 x 需要四舍五入,默认值为 0。
@Return: 
    浮点数x的四舍五入值。
'''
# round(number[, ndigits])
print ("round(70.23456) : ", round(70.23456))   # round(70.23456) :  70
print ("round(0.5) : ", round(0.5)) # round(0.5) :  0
print ("round(-0.5) : ", round(-0.5))   # round(-0.5) :  0
print ("round(1.5) : ", round(1.5)) # round(1.5) :  2
print ("round(-1.5) : ", round(-1.5))   # round(-1.5) :  -2
print ("round(2.675, 2)  : ", round(2.675, 2) )     # round(2.675, 2)  :  2.67
print ("round(135.0, -1)  : ", round(135.0, -1) )   # round(135.0, -1)  :  140.0 
# round(number[, ndigits]) End

class set([iterable])

'''
@Description: 
    set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。
@Param:
    iterable -- 可迭代对象对象;
@Return: 
    新的集合对象。
'''
# class set([iterable])
settmp = set('leacoder')
print(settmp)   # {'l', 'd', 'c', 'r', 'o', 'a', 'e'}
# class set([iterable]) End

setattr(object, name, value)

'''
@Description: 
    setattr() 函数对应函数 getattr(),用于设置属性值,该属性不一定是存在的。
@Param: 
    object -- 对象。
    name -- 字符串,对象属性。
    value -- 属性值。
@Return: 
'''
# setattr(object, name, value)
class G(object):
    bar = 'leacoder'
g = G()
setattr(g, 'bar',1234) 
print(g.bar)    # 1234
setattr(g, 'Author','leacoder') 
print(g.Author) # leacoder
# setattr(object, name, value) End

slice()

'''
@Description: 
    slice() 函数实现切片对象,主要用在切片操作函数里的参数传递。
    class slice(stop)
    class slice(start, stop[, step])
@Param: 
    start -- 起始位置
    stop -- 结束位置
    step -- 间距
    start和step参数默认为None。
@Return: 
    返回一个切片对象。
'''
# slice()
myslice = slice(None,9,2) 
print(myslice)  # slice(None, 9, 2)
arr = range(10)
print(list(arr))  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list(arr[myslice])) # [0, 2, 4, 6, 8]
# slice() End

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

'''
@Description: 
    sorted() 函数对所有可迭代的对象进行排序操作。
    sort 与 sorted 区别:
    sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
    list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
@Param: 
    terable -- 可迭代对象。
    key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
    reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
@Return:
    返回重新排序的列表。
'''
# sorted(iterable, *, key=None, reverse=False)
test = [3,5,2,1,4] 
sortedtest = sorted(test)   # [3, 5, 2, 1, 4]
print(test)
print(sortedtest)   # [1, 2, 3, 4, 5]
test.sort()
print(test) # [1, 2, 3, 4, 5]
example_list = [5, 0, 6, 1, 2, 7, 3, 4]
result_list = sorted(example_list, key = lambda x: -x)
print(result_list)  # [7, 6, 5, 4, 3, 2, 1, 0]
result_list = sorted(example_list, reverse=True)
print(result_list)  # [7, 6, 5, 4, 3, 2, 1, 0]
print(example_list)  # [5, 0, 6, 1, 2, 7, 3, 4]
# sorted(iterable, *, key=None, reverse=False) End

@staticmethod

'''
@Description: 
    将方法转换为静态方法。
@Param: 
@Return: 
'''
# @staticmethod
# 静态方法不会接收隐式的第一个参数。要声明静态方法,请使用此惯用法:
class H:
    @staticmethod
    def f():
        print('@staticmethod def f(arg1, arg2):')
        pass
# 以上实例声明了静态方法 f,类可以不用实例化就可以调用该方法 H.f(),当然也可以实例化后调用 H().f()。
H.f();       # @staticmethod def f(arg1, arg2):   # 静态方法无需实例化
cobj = H()
cobj.f()    # @staticmethod def f(arg1, arg2):    # 也可以实例化后调用
# @staticmethod End

str()

'''
@Description: 
    class str(object='')
    class str(object=b'', encoding='utf-8', errors='strict')
    返回对象的字符串版本。如果未提供object,则返回空字符串。否则,str()的行为取决于是否给出编码或错误,
@Param: 
    object -- 对象。
    返回对象的字符串版本。如果未提供object,则返回空字符串。否则,str()的行为取决于是否给出编码或错误
    1、如果既没有给出编码也没有给出错误,str(object)返回对象.__ str __(),它是对象的“非正式”或可打印良好的字符串表示。
    对于字符串对象,这是字符串本身。 如果object没有__str __()方法,则str()将返回 repr(object)。
    2、如果给出了编码或错误中的至少一个,则对象应该是类似字节的对象(例如,字节或字节数组)。
    在这种情况下,如果object是一个bytes(或bytearray)对象,则str(bytes,encoding,errors)等效于bytes.decode(encoding,errors)。
    3、将bytes对象传递给str()而不使用encoding或errors参数属于第一种返回非正式字符串表示的情况
@Return:
'''
# str()
s = 'leacoder'
print(str(s))   # leacoder
s = b'leacoder'
print(str(s))   # b'leacoder'
print(str(s,encoding ='utf-8'))    # leacoder
# str() End

sum(iterable[, start])

'''
@Description: 
    sum() 方法对系列进行求和计算。
@Param: 
    iterable -- 可迭代对象,如:列表、元组、集合。
    start -- 指定相加的参数,如果没有设置这个值,默认为0。   
@Return: 
'''
# sum(iterable[, start])
print(sum([0,1,2])) # 3
print(sum([0,1,2],-1))  # 2 # 列表计算总和后再加 -1
# sum(iterable[, start]) End

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

'''
@Description: 
    super() 函数是用于调用父类(超类)的一个方法。
    super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。
    MRO 就是类的方法解析顺序表, 其实也就是继承父类方法时的顺序表。
    可以使用直接使用 super().xxx 代替 super(Class, self).xxx :
@Param: 
    type -- 类。
    object-or-type -- 类,一般是 self
@Return: 
'''
# super([type[, object-or-type]])
class Asuper:
     def add(self, x):
         y = x+1
         print(y)
class Bsuper(Asuper):
    def add(self, x):
        super().add(x)
b = Bsuper()
b.add(2)  # 3
# super([type[, object-or-type]]) End

tuple([iterable])

'''
@Description: 
    tuple 函数将列表转换为元组。
@Param: 
    seq -- 要转换为元组的序列。将字符串,列表,字典,集合转化为元组,将字典转换为元组时,只保留键!
@Return: 
    返回元组。
'''
# tuple([iterable])
list1= ['Google', 'Taobao', 'Baidu']
tuple1=tuple(list1)
print(tuple1)   # ('Google', 'Taobao', 'Baidu')
dict1 = {'Author':'leacoder','Time':'2019/04/18 23:37:06'}
tuple1 = tuple(dict1)
print(tuple1)   # ('Author', 'Time')
# tuple([iterable]) End

type()

'''
@Description: 
    class type(object)
    class type(name, bases, dict)
    type() 函数如果你只有第一个参数则返回对象的类型,三个参数返回新的类型对象。

    isinstance() 与 type() 区别:
    type() 不会认为子类是一种父类类型,不考虑继承关系。
    isinstance() 会认为子类是一种父类类型,考虑继承关系。
    如果要判断两个类型是否相同推荐使用 isinstance()。
    参见 isinstance(object, classinfo)
@Param: 
    name -- 类的名称。
    bases -- 基类的元组。
    dict -- 字典,类内定义的命名空间变量。
@Return: 
    一个参数返回对象类型, 三个参数,返回新的类型对象。
'''
# type() 
# 一个参数实例
print(type(1))  # <class 'int'>
# 三个参数, 使用三个参数,返回一个新类型对象。这实际上是类申明的动态形式。
class X:
    a = 1
X = type('X', (object,), dict(a=1))
# 以上两个语句创建相同的类型对象
# type()  End

vars([object])

'''
@Description: 
    vars() 函数返回对象object的属性和属性值的字典对象。
    返回具有__dict__属性的模块,类,实例或任何其他对象的__dict__属性。
@Param: 
    object -- 对象
    没有参数,vars()就像locals()一样。locals字典仅对读取有用,因为忽略了对locals字典的更新。
@Return: 
'''
# vars([object])
print(vars())
class Xvars:
    a = 1
print(vars(Xvars))
# vars([object]) End

zip(*iterables)

'''
@Description: 
    创建一个迭代器,聚合每个迭代的元素。
    返回元组的迭代器,其中第i个元组包含来自每个参数序列或迭代的第i个元素。当最短输入可迭代用尽时,迭代器停止。
    zip()与*运算符一起用于解压缩列表
@Param: 
    iterabl -- 一个或多个迭代器;
@Return: 
    一个对象。
'''
# zip(*iterables)
a = [1,2,3]
b = [4,5,6,7,8]
zipped = zip(a,b)     # 返回一个对象
print(zipped)   # <zip object at 0x7f6560237b88>
print(list(zipped)) # [(1, 4), (2, 5), (3, 6)]
a1, a2 = zip(*zip(a,b))  # 与 zip 相反,zip(*) 可理解为解压
print(a1)   # (1, 2, 3)
print(a2)   # (4, 5, 6)
print(type(a1)) # <class 'tuple'>
# zip(*iterables) End

import(name, globals=None, locals=None, fromlist=(), level=0)

'''
@Description: 
    __import__() 函数用于动态加载类和函数 。
    如果一个模块经常变化就可以使用 __import__() 来动态载入。
@Param: 
@Return: 
'''
# __import__(name, globals=None, locals=None, fromlist=(), level=0)

# __import__(name, globals=None, locals=None, fromlist=(), level=0) End

GitHub链接: https://github.com/lichangke/LeetCode

知乎个人首页: https://www.zhihu.com/people/lichangke/

简书个人首页: https://www.jianshu.com/u/3e95c7555dc7

个人Blog: https://lichangke.github.io/

欢迎大家来一起交流学习


Comments

Content