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模块 相当于 用字符串的格式导入该模块