Python开发【第五篇】内置函数

abs()

函数返回数字的绝对值

__author__ = "Tang"

a = -30
print(abs(a))# 30

all()

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

如果iterable的所有元素不为0、''"、False或者iterable为空,all(iterable)返回True,否则返回False;注意 空列表 空元组 空字典 空字符串是True

__author__ = "Tang"

a = all([1,0])
print(a) # False

a = all([1,False])
print(a) # False

a = all(["",1])
print(a) # False

a = all([])
print(a) # True

a = all(())
print(a) # True

a = all({})
print(a) # True

a = ""
print(all(a)) # True

any() 

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

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

__author__ = "Tang"

a = any([1,0])
print(a) # True

a = any([1,False])
print(a) # True

a = any(["",1])
print(a) # True

a = any([])
print(a) # False

a = any(())
print(a) # False

a = any({})
print(a) # False

a=""
print(any("")) # False

basestring() 

方法是 str 和 unicode 的超类(父类)可以用来判断一个对象是否为 str 或者 unicode 的实例,isinstance(obj, basestring) 等价于 isinstance(obj, (str, unicode))

bin()  返回一个整数 int 的二进制表示

__author__ = "Tang"

a = 10
print(bin(a)) # 0b1010

a = 500
print(bin(a)) # 0b111110100

bool() 

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

__author__ = "Tang"

# 为False的情况 七兄弟
# () [] {} 0 False "" 空
print(bool(())) # False
print(bool([])) # False
print(bool({}))# False
print(bool(0))# False
print(bool(False))# False
print(bool(""))# False
print(bool())# False

print(bool(10)) # 其他情况都为True

bytearray() 

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

__author__ = "Tang"

a = bytearray()
print(a) # bytearray(b'')

a = bytearray([1,2,3]) 
print(a)#bytearray(b'\x01\x02\x03')

callable()

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

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

chr()

用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应ascii字符

__author__ = "Tang"

print(chr(97)) # a

classmethod 

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

是类里面方法的语法糖,有property,staticmethod等

__author__ = "Tang"

class A(object):
    @classmethod
    def func1(self):
        print('foo')

A.func1()  # foo

cmp(x,y)

Python3中已经不能使用该函数

compile()

函数将一个字符串编译为字节代码

__author__ = "Tang"

# compile() 函数将一个字符串编译为字节代码
# compile(*args, **kwargs)
str1 = "for i in range(1,10): print(i,end=' ')"
a = (compile(str1,"","exec"))
print(a) # <code object <module> at 0x02AFD758, file "", line 1>
exec(a) # 1 2 3 4 5 6 7 8 9

delattr(object,name) 

函数用于删除属性

__author__ = "Tang"

class A:
    x = 20

print(A.x) # 20
delattr(A,"x")
print(A.x) #报错

dict() 

函数用于创建一个字典 五星级别*****

__author__ = "Tang"

"""
class dict(**kwarg) # 键值对方式
class dict(mapping, **kwarg) # 映射函数方式来构造字典
class dict(iterable, **kwarg) # 可迭代对象方式来构造字典
"""

a = dict(a='a',b='b',c='c')
print(a) # {'a': 'a', 'b': 'b', 'c': 'c'}

a = dict(zip([1,2,3,4,5],['a','b','c','d','e']))
print(a) # {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e'}

a = dict([(1,'a'),(2,'b'),(3,'c'),(4,'d')])
print(a) # {1: 'a', 2: 'b', 3: 'c', 4: 'd'}

a = dict(((1,'a'),(2,'b'),(3,'c'),(4,'d'),))
print(a) # {1: 'a', 2: 'b', 3: 'c', 4: 'd'}

dir() 

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

__author__ = "Tang"

"""此方法在学习过程中非常有用,可用于查看类的方法"""

print(dir())
"""
['__annotations__', '__author__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']
"""

print(dir( [] ))
"""
查看列表的方法
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
"""

divmod()

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

__author__ = "Tang"

print(divmod(9,3)) # (3, 0)

a,b = divmod(5,2)
print(a,b) # 2 1

# 如果有一个参数是小数,那么结果都是小数
a,b = divmod(10.0,3)
print(a,b) # 3.0 1.0

a,b = divmod(11,3.0)
print(a,b) # 3.0 2.0

enumerate()

函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列

__author__ = "Tang"

"""
enumerate(sequence, [start=0]) 可以自定义start 开始下标
返回两个参数,第一个为下标,第二个为值
"""

a = ['tang','lao','er']
for key,value in enumerate(a,10):
    print(key,value)
"""
10 tang
11 lao
12 er
"""

 eval()

函数用来执行一个字符串表达式,并返回表达式的值,可以说是一个计算器

__author__ = "Tang"

"""
eval(expression[, globals[, locals]])
expression 表达式
globals - 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象
locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象
"""

x = 2
print(eval('3 * x')) # 6

print(eval('2+2')) # 4

print(eval('2**10')) # 1024

execfile() 

函数可以用来执行一个文件

python3 中没有该函数 

file()

python3 中没有该函数

filter() 

函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表

__author__ = "Tang"

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

def test(n):
    return n%2
li = filter(test,[i for i in range(10)])
print(li) # <filter object at 0x00B132F0>
print(list(li)) # [1, 3, 5, 7, 9]

# 配合匿名函数
li = filter(lambda x:x%2,[i for i in range(10)])
print(li) # <filter object at 0x036232F0>
print(list(li)) # [1, 3, 5, 7, 9]

float() 

函数用于将整数和字符串转换成浮点数,字符串是数字在里面才行,不然会报错

__author__ = "Tang"

a = 10
print(float(a)) # 10.0

a = -234
print(float(a)) # -234.0

a = "123"
print(float(a)) # 123.0

a = "123abc"
print(float(a)) # 报错

format()

请看 字符串格式化篇

frozenset()

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

__author__ = "Tang"

"""
class frozenset([iterable])
iterable 可迭代对象  能够被for循环的都是可迭代对象,也可以去重
"""

a = frozenset(range(10))
print(a) # frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
print(list(a)) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

a = frozenset("tanglaoer") # 2个a
print(list(a)) # ['r', 'l', 'e', 'o', 'a', 't', 'g', 'n'] 一个a

li = [1,2,3]
li.append(4)
print(li) # [1, 2, 3, 4]

a.append(4) # 报错
print (a)  # 报错

getattr()

函数用于返回一个对象属性值

__author__ = "Tang"

"""
getattr(object, name[, default])
object 对象
name 字符串,对象属性
default 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError
"""
class A:
    b = 12
a = A()
c = getattr(A,'b')
print(c) # 12

d = getattr(A,'z')
print(d) # 报错 AttributeError: type object 'A' has no attribute 'z'

globals() 

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

__author__ = "Tang"

a = "tang"
print(globals())

"""
{   '__name__': '__main__',
    '__doc__': None,
    '__package__': None, 
    '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x009FC350>,
    '__spec__': None, 
    '__annotations__': {},
    '__builtins__': <module 'builtins' (built-in)>, 
    '__file__': 'F:/python_django/基础/内置函数.py', 
    '__cached__': None,
    '__author__': 'Tang',
    'a': 'tang'
}
"""

hasattr()

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

__author__ = "Tang"

"""
hasattr(object, name)
object 对象。
name 字符串,属性名
"""
class A:
    b = '10'
a = A()
print(hasattr(a,'b')) # True
print(hasattr(a,'z')) # False

hash()

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

__author__ = "Tang"

"""
hash(object)
"""
print(hash("tang")) # 278126952
print(hash(23)) # 23
print(hash(str([1,2,3]))) # 716557122
# print(hash([1,2,3])) # 报错

help()

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

__author__ = "Tang"

"""
help([object])
object 对象
"""
print(help("os")) # 查看os模块的详细帮助信息
# 输出内容太多了,我就不打印了

hex()

函数用于将10进制整数转换成16进制,以字符串形式表示

__author__ = "Tang"

print(hex(10)) # 0xa

a = hex(17)
print(a, type(a)) # 0x11 <class 'str'>

id()

函数用于获取对象的内存地址

__author__ = "Tang"

"""
在这里提一下,两个变量指向一个相同的不可变数据类型的数值时,它们的id是相同的,
但是元组不一样,它们id是改变的,与列表一样
"""
# int
a  = 10
print(id(a)) # 1368449952
b  = 10
print(id(b)) # 1368449952

# str 字符串是不可变数据类型
a = "tang"
print(id(a)) # 17810368

b = "tang"
print(id(b)) # 17810368

# 列表
a = [1,2,3,4]
print(id(a)) # 50262384

b = [1,2,3,4]
print(id(b)) # 50262344


a = (1,2,3,4,)
print(id(a)) # 6564096

b = (1,2,3,4,)
print(id(b)) # 6631664

input()

 函数接受一个标准输入数据,返回为 string 类型

__author__ = "Tang"

a = input('请输入:')
print(a,type(a))

int()

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

__author__ = "Tang"

"""
class int(x, base=10)
x 字符串或数字
base 进制数,默认按十进制
"""
a = "123"
print(int(a))  # 123

# a = "abc123"
# print(int(a)) # 报错

a = 3.6
print(int(a))  # 3

a = '0xa'
print(int(a, base=16)) # 10

a = '10'
print(int(a,base=8)) # 8

isinstance()

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

__author__ = "Tang"

"""
isinstance() 与 type() 区别:
type() 不会认为子类是一种父类类型,不考虑继承关系。
isinstance() 会认为子类是一种父类类型,考虑继承关系。
如果要判断两个类型是否相同推荐使用 isinstance()。

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

a = 10
print(isinstance(a,int)) # True


class A:
    pass

class B(A):
    pass
obj = B()
print(isinstance(obj,A)) #True
print(isinstance(obj,B)) #True

issubclass()

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

__author__ = "Tang"

"""
issubclass(class, classinfo)
class 类。
classinfo 类
"""
class A:
    pass
class B(A):
    pass
print(issubclass(A,B)) # False
print(issubclass(B,A)) # True

iter() 

函数用来生成迭代器

__author__ = "Tang"

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

li = [1,2,3]
for i in iter(li):
    print(i,end=" ") # 1 2 3

l = ['a','b','c','d']
def test():
    return l.pop()
it = iter(test,'z') # 无穷执行test() 直到test结果等于'z'
print(it.__next__()) # d
print(it.__next__()) # c
print(it.__next__()) # b
print(it.__next__()) # a
print(it.__next__()) # IndexError: pop from empty list

len()

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

__author__ = "Tang"

"""
len( s )
s -- 对象
"""
s = "tang"
print(len(s)) # 4

a = [1,2,3,4]
print(len(a)) # 4

list() 

方法用于将对象转换为列表

__author__ = "Tang"

# 字符串转换
a = "tang"
print(list(a)) # ['t', 'a', 'n', 'g']

# a = 123
# print(list(a)) # 报错

a = (1,2,3,)
print(list(a)) # [1, 2, 3]

locals()

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

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

__author__ = "Tang"

def test():
    a = 1
    print(locals()) # {'a': 1}
    print(globals())
    """
    {
    '__name__': '__main__', 
    '__doc__': None, 
    '__package__': None, 
    '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x00E3C350>, 
    '__spec__': None, 
    '__annotations__': {}, 
    '__builtins__': <module 'builtins' (built-in)>, 
    '__file__': 'F:/python_django/基础/内置函数.py', 
    '__cached__': None, 
    '__author__': 'Tang', 
    'test': <function test at 0x002BB618>}
    """
test()

long()

python3 已经没有该函数

map() 

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

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

__author__ = "Tang"

"""
map(function, iterable, ...)
function  函数,有一个参数
iterable 一个或多个序列
"""
def test(a):
    return a**2
li = [1,2,3,4]
print(map(test,li)) # <map object at 0x017432F0>
print(list(map(test,li))) # [1, 4, 9, 16]

# 结合lambda表达式
a = map(lambda a:a**2,[i for i in range(10)])
print(list(a)) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

max()

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

__author__ = "Tang"

"""
max( x, y, z, .... )
"""
a = [1,2,3,4]
print(max(a)) # 4


a = (1,2,3,4)
print(max(a)) # 4

memoryview() 

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

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

__author__ = "Tang"

"""
memoryview(obj)
"""

v = memoryview(bytearray("tang",'utf-8'))
print(v[1]) # 97

print(v[0]) # 116
print(chr(v[0])) # t

min()

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

__author__ = "Tang"

a = [1,2,3]
print(min(a)) # 1

next() 

返回迭代器的下一个项目

__author__ = "Tang"

"""
next(iterator[, default])
iterator 可迭代对象
default 可选,用于设置在没有下一个元素时返回该默认值,如果不设置,又没有下一个元素则会触发 StopIteration 异常
"""
li = [1,2,3,4]
# print(next(li)) # TypeError: 'list' object is not an iterator

# 先转换为可迭代对象
li = iter(li)
print(next(li)) #  1
print(next(li)) #  2
print(next(li)) #  3
print(next(li,80)) #  4
print(next(li,90)) #  90 不然就报错

oct()

函数将一个整数转换成8进制字符串

__author__ = "Tang"

a = 10
t = oct(a)
print(a,t,type(t)) # 10 0o12 <class 'str'>

open()

函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写

__author__ = "Tang"

"""
open(name[, mode[, buffering]])
name : 一个包含了你要访问的文件名称的字符串值。
mode : mode 决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
buffering : 如果 buffering 的值被设为 0,就不会有寄存。如果 buffering 的值取 1,访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认


r    以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb    以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+    打开一个文件用于读写。文件指针将会放在文件的开头。
rb+    以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w    打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb    以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
w+    打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+    以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a    打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab    以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+    打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+    以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
"""

"""
file 对象方法
file.read([size]) size未指定则返回整个文件,如果文件大小>2倍内存则有问题.f.read()读到文件尾时返回""(空字串)
file.readline() 返回一行
file.readlines([size]) 返回包含size行的列表,size 未指定则返回全部行
for line in f: print line #通过迭代器访问
f.write("hello\n") #如果要写入字符串以外的数据,先将他转换为字符串.
f.tell() 返回一个整数,表示当前文件指针的位置(就是到文件头的比特数).
f.seek(偏移量,[起始位置]) 用来移动文件指针.
偏移量:单位:比特,可正可负
起始位置:0-文件头,默认值;1-当前位置;2-文件尾
f.close() 关闭文件
"""


# 有一个文件aa.txt
"""
tanglao
er
"""
f = open("aa.txt")
f.read() #tanglao\ner\n

ord()

函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,

它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常

__author__ = "Tang"

print(ord('a')) # 97

pow() 

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

__author__ = "Tang"

print(pow(2,2)) # 4

print(pow(10,2)) # 100

print()

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

__author__ = "Tang"

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

a = "tanglaoer"
b = "chenlaosan"
print(a,b) # tanglaoer chenlaosan
print(a,b,sep='*') #tanglaoer*chenlaosan

a = [1,2,3,4]
for i in a:
    print(i)
"""
1
2
3
4
"""
for i in a:
    print(i,end=" ") #1 2 3 4 

property() 

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

__author__ = "Tang"

"""
class property([fget[, fset[, fdel[, doc]]]])
fget -- 获取属性值的函数
fset -- 设置属性值的函数
fdel -- 删除属性值函数
doc -- 属性描述信息
"""
class A:
    def test(self):
        print('tang')
a = A()
a.test() # tang   注意:这里有括号 是函数

class B:
    @property
    def test(self):
        print('laoer')
b = B()
b.test # 老二 注意:这里没有括号 是属性

range()

函数可创建一个整数列表,一般用在 for 循环中

__author__ = "Tang"

"""
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)
"""

a = range(10)
print(a) # range(0, 10)
print(list(a)) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

a = range(2,10,2)
print(list(a)) # [2, 4, 6, 8]

reduce() 

函数会对参数序列中元素进行累积。

函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果

__author__ = "Tang"

"""
reduce(function, iterable[, initializer])
function -- 函数,有两个参数
iterable -- 可迭代对象
initializer -- 可选,初始参数
"""
from functools import reduce

def test(a,b):
    return  a+ b
b = [1,2,3,4,5,6,7]
a = reduce(test,b)
print(a) # 28

# 配合lambda
a = reduce(lambda x,y:x+y,b)
print(a) # 28

"""
顺便问一道题:用一句话打印1~100的和?
"""
print(sum(range(101))) # 5050

reload() 

用于重新载入之前载入的模块 没啥用啦

__author__ = "Tang"

"""
reload(module)
module -- 模块对象
"""

import sys
from imp import reload

repr()

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

__author__ = "Tang"

s = "tanglaoer"
print(s) # tanglaoer
print(repr(s)) # 'tanglaoer'

reverse()

函数用于反向列表中元素

__author__ = "Tang"

"""
list.reverse() 无返回值
"""
a = [1,2,3,4]
print(a.reverse()) #None
print(a) # [4, 3, 2, 1]

 round()

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

__author__ = "Tang"

a = 3.4
print(round(a)) # 3

a = 3.6
print(round(a)) # 4

set() 

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

__author__ = "Tang"

"""
class set([iterable])
"""
x = set([1,2,3])
print(x) # {1, 2, 3}

x = set("tanglao") # 无重复的集合
print(x) # {'a', 'n', 't', 'g', 'o', 'l'}

setattr()

函数对应函数 getatt(),用于设置属性值,该属性必须存在

__author__ = "Tang"

"""
setattr(object, name, value)
object -- 对象。
name -- 字符串,对象属性。
value -- 属性值
"""

class A:
    b = 1

a = A()
print(getattr(a,'b'))

setattr(a,'c',5)
print(a.c) # 5

slice()

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

__author__ = "Tang"

"""
class slice(stop)
class slice(start, stop[, step])
start -- 起始位置
stop -- 结束位置
step -- 间距

返回值:
返回一个切片对象
"""

myslice = slice(3) # 设置截取5个元素的切片
a = [1,2,3,4,5,6]
print(a[myslice]) # [1, 2, 3]

sorted() 

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

__author__ = "Tang"

"""
sort 与 sorted 区别:
1.sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
2.list 的 sort 方法返回的是对已经存在的列表进行操作,
而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作
"""
a = [1,5,87,3,5,8,0]
print(a) # [1, 5, 87, 3, 5, 8, 0]
b = a.sort()
print(b) # None
print(a) # [0, 1, 3, 5, 5, 8, 87]

a = [1,5,87,3,5,8,0]
print(a) # [1, 5, 87, 3, 5, 8, 0]
b = sorted(a)
print(b) # [0, 1, 3, 5, 5, 8, 87]
print(a) # [1, 5, 87, 3, 5, 8, 0]

"""
也就是说 sort() 是在原有列表的基础上修改,并没有返回值,
而sorted() 返回一个排好序的列表,原列表并没有修改
"""

staticmethod()

返回函数的静态方法。该方法不强制要求传递参数

__author__ = "Tang"

"""
staticmethod(function)
"""

class C:
    @staticmethod
    def f():
        print("我是静态方法 我没有self")

    def t(self):
        print("我是标准方法 我有self")
C.f()
c = C()
c.f()

# C.t()# 报错
c = C()
c.t()
"""
类与实例都可以调用静态方法
注意:静态方法并没有参数 self 或者 cls,请与标准函数进行比较
"""

str()

字符串函数

__author__ = "Tang"

a = 123
print(a,type(a)) # 123 <class 'int'>

a = 123
a = str(a)
print(a,type(a)) # 123 <class 'str'>

sum()

 方法对系列进行求和计算

__author__ = "Tang"

"""
sum(iterable[, start])
iterable -- 可迭代对象,如:列表、元组、集合。
start -- 指定相加的参数,如果没有设置这个值,默认为0
"""
a = [1,2,3,4]
print(sum(a)) # 10

print(sum(a,10)) # 20

# 面试题 用一句话打印出1~100的和
print(sum(range(101))) # 5050

super() 

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

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

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

__author__ = "Tang"

"""
super(type[, object-or-type])
type -- 类。
object-or-type -- 类,一般是 self
"""

class A():
    def tt(self):
        print("我是父类的tt")
        return
class B(A):
    def tt(self):
        super().tt() # 调用父类函数
        print("我是子类的tt")

b = B()
b.tt()
"""
我是父类的tt
我是子类的tt
"""

tuple()

函数将列表转换为元组

__author__ = "Tang"

a = [1,2,3,4]
b = tuple(a)
print(b) # (1, 2, 3, 4)

type()

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

__author__ = "Tang"

"""
isinstance() 与 type() 区别:
type() 不会认为子类是一种父类类型,不考虑继承关系。
isinstance() 会认为子类是一种父类类型,考虑继承关系。
如果要判断两个类型是否相同推荐使用 isinstance()。

type(name, bases, dict)
name -- 类的名称。
bases -- 基类的元组。
dict -- 字典,类内定义的命名空间变量。
返回值
一个参数就返回对象类型, 
如果是三个参数,那么就返回新的类型对象
"""

print(type(1)) # <class 'int'>

print(type([1,2,3])) # <class 'list'>

# 创建一个类
x = type('X',(object,),dict(a=1))

print(x) # <class '__main__.X'>
obj = x()
print(obj.a) # 1

zip() 

函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

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

在 Python 3.x 中为了减少内存,zip() 返回的是一个对象。如需展示列表,需手动 list() 转换。

__author__ = "Tang"
"""
zip([iterable, ...])
iterabl -- 一个或多个迭代器;

返回值:
返回元组列表。
"""

a = [1,2,3,4,5]
b = ['a','b','c','d']
print(zip(a,b)) # <zip object at 0x00E7F6E8>
print(list(zip(a,b))) # [(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]

a = (1,2,3,4,5)
b = ('a','b','c','d')
print(zip(a,b)) # <zip object at 0x00E7F6E8>
print(list(zip(a,b))) # [(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]



# 当只有一个参数时
a = [1,2,3,4,5]
print(list(zip(a))) # [(1,), (2,), (3,), (4,), (5,)]

#  zip 和* 结合使用 反解压
a = [1,2,3,4,5]
b = ['a','b','c','d']
tt = zip(a,b)

x,y = zip(*tt)
print(x,y)
"""
(1, 2, 3, 4) 
('a', 'b', 'c', 'd')
"""

__import__() 

函数用于动态加载类和函数 。

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

__author__ = "Tang"

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

# 假如有一个a.py
__import__("a") # 这就是导入a模块 相当于 用字符串的格式导入该模块

猜你喜欢

转载自www.cnblogs.com/tangkaishou/p/9495473.html