本节主要讲述python的内置函数、变量以及常用内置模块的函数。
abs:求数值的绝对值返回一个数的绝对值。参数可以是普通的整数,长整数或者浮点数。如果参数是个复数,返回它的模 >>> abs(-2)2
divmod:返回两个数值的商和余数,以元组形式返回
max:返回可迭代对象中的元素中的最大值或者所有参数的最大值>>> max(1,2,3) # 传入3个参数 取3个中较大者3>>> max('1234') # 传入1个可迭代对象,取其最大元素值'4'>>> max(-1,0) # 数值默认去数值较大者0>>> max(-1,0,key = abs) # 传入了求绝对值函数,则参数都会进行求绝对值后再取较大者-1
min:返回可迭代对象中的元素中的最小值或者所有参数的最小值
pow:返回两个数值的幂运算值或其与指定整数的模值pow(x,y) 等价于 x**y >>> pow(2,3)>>> 2**3
round:对浮点数进行四舍五入求值第一个参数是一个浮点数,第二个参数是保留的小数位数,可选,如果不写的话默认保留到整数
近似计算我们还有其他的选择: sum:对元素类型是数值的可迭代对象中的每个元素求和>>> sum((1,2,3,4))10# 元素类型必须是数值型>>> sum((1.5,2.5,3.5,4.5))12.0>>> sum((1,2,3,4),-10)0
bool: 函数用于将给定参数转换为布尔类型,如果没有参数,返回 False
int:函数用于将一个字符串或数字转换为整型默认语法:class int(x, base=10) >>>int() # 不传入参数时,得到结果00>>> int(3)3>>> int(3.6)3>>> int('12',16) # 如果是带参数base的话,12要以字符串的形式进行输入,12 为 16进制18>>> int('0xa',16) 10 >>> int('10',8) 8
float:函数用于将整数和字符串转换成浮点数。默认语法:class float([x])
str:函数将对象转化为适于人阅读的形式。默认语法:class str(object=”) >>>s = 'RUNOOB'>>> str(s)'RUNOOB'>>> dict = {'runoob': 'runoob.com', 'google': 'google.com'};>>> str(dict)'{'google': 'google.com', 'runoob': 'runoob.com'}'>>> str(123)'123'
bytearray:根据传入的参数创建一个新的字节数组,这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256默认语法:class bytearray([source[, encoding[, errors]]])
bytes:根据传入的参数创建一个新的不可变字节数组>>> bytes('中文','utf-8')b'\xe4\xb8\xad\xe6\x96\x87'
memoryview:根据传入的参数创建一个新的内存查看对象默认语法:memoryview(obj)
ord:返回Unicode字符对应的整数ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。 >>>ord('a')97>>> ord('b')98>>> ord('c')99
chr:返回整数所对应的Unicode字符chr() 用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符。
bin:将整数转换成2进制字符串bin() 返回一个整数 int 或者长整数 long int 的二进制表示。 >>>bin(10)'0b1010'>>> bin(20)'0b10100'
oct:将整数转化成8进制数字符串oct() 函数将一个整数转换成8进制字符串。
hex:将整数转换成16进制字符串hex() 函数用于将10进制整数转换成16进制,以字符串形式表示。 >>>hex(255)'0xff'>>> hex(-42)'-0x2a'>>> hex(1L)'0x1L'>>> hex(12)'0xc'>>> type(hex(12))<class 'str'>
tuple:根据传入的参数创建一个新的元组默认语法:tuple( seq ),seq – 要转换为元组的序列
list:根据传入的参数创建一个新的列表>>>list() # 不传入参数,创建空列表[] >>> list('abcd') # 传入可迭代对象,使用其元素创建新的列表['a', 'b', 'c', 'd']
dict:根据传入的参数创建一个新的字典class dict(**kwarg)
set:根据传入的参数创建一个新的集合set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。 >>>set() # 不传入参数,创建空集合set()>>> a = set(range(10)) # 传入可迭代对象,创建集合>>> a{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}>>>x = set('runoob')>>> y = set('google')>>> x, y(set(['b', 'r', 'u', 'o', 'n']), set(['e', 'o', 'g', 'l'])) # 重复的被删除>>> x & y # 交集set(['o'])>>> x | y # 并集set(['b', 'e', 'g', 'l', 'o', 'n', 'r', 'u'])>>> x - y # 差集set(['r', 'b', 'u', 'n'])
frozenset:根据传入的参数创建一个新的不可变集合class frozenset([iterable])
enumerate:根据可迭代对象创建枚举对象enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。 >>>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')]>>>seq = ['one', 'two', 'three']>>> for i, element in enumerate(seq):... print(i, element)... 0 one1 two2 three
range:根据传入的参数创建一个新的range对象range(start, stop[, step])
iter:根据传入的参数创建一个新的可迭代对象iter(object[, sentinel]) >>>lst = [1, 2, 3]>>> for i in iter(lst):... print(i)... 123class counter: def __init__(self, _start, _end): self.start = _start self.end = _end def get_next(self): s = self.start if(self.start < self.end): self.start += 1 else: raise StopIteration return sc = counter(1, 5)iterator = iter(c.get_next, 3)print(type(iterator))for i in iterator: print(i)>>> <class 'callable_iterator'>>>> 1>>> 2
slice:根据传入的参数创建一个新的切片对象class slice(stop)
super:根据传入的参数创建一个新的子类和父类关系的代理对象super() 函数是用于调用父类(超类)的一个方法。 #定义父类A>>> class A(object): def __init__(self): print('A.__init__')#定义子类B,继承A>>> class B(A): def __init__(self): print('B.__init__') super().__init__()#super调用父类方法>>> b = B()B.__init__A.__init__
filter:使用指定方法过滤可迭代对象的元素filter()接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素
map:使用指定方法去作用传入的每个可迭代对象的元素,生成新的可迭代对象map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回 >>> a = map(ord,'abcd')>>> a<map object at 0x03994E50>>>> list(a)[97, 98, 99, 100]
reduce:对参数序列中元素进行累积,生成新的可迭代对象reduce(function, iterable[, initializer])
next:返回可迭代对象中的下一个元素值next(iterator[, default]) >>> a = iter('abcd')>>> next(a)'a'>>> next(a)'b'>>> next(a)'c'>>> next(a)'d'>>> next(a)Traceback (most recent call last): File '<pyshell#18>', line 1, in <module> next(a)StopIteration#传入default参数后,如果可迭代对象还有元素没有返回,则依次返回其元素值,如果所有元素已经返回,则返回default指定的默认值而不抛出StopIteration 异常>>> next(a,'e')'e'>>> next(a,'e')'e'
reversed:反转序列生成新的可迭代对象
sorted:对可迭代对象进行排序,返回一个新的列表sorted(iterable[, cmp[, key[, reverse]]]) >>> a = ['a','b','d','c','B','A']>>> a['a', 'b', 'd', 'c', 'B', 'A']>>> sorted(a) # 默认按字符ascii码排序['A', 'B', 'a', 'b', 'c', 'd']>>> sorted(a,key = str.lower) # 转换成小写后再排序,'a'和'A'值一样,'b'和'B'值一样['a', 'A', 'b', 'B', 'c', 'd']>>>a = [5,7,6,3,4,1,2]>>> b = sorted(a) # 保留原列表>>> a [5, 7, 6, 3, 4, 1, 2]>>> b[1, 2, 3, 4, 5, 6, 7]>>> L=[('b',2),('a',1),('c',3),('d',4)]>>> sorted(L, cmp=lambda x,y:cmp(x[1],y[1])) # 利用cmp函数[('a', 1), ('b', 2), ('c', 3), ('d', 4)]>>> sorted(L, key=lambda x:x[1]) # 利用key[('a', 1), ('b', 2), ('c', 3), ('d', 4)] >>> students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]>>> sorted(students, key=lambda s: s[2]) # 按年龄排序[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]>>> sorted(students, key=lambda s: s[2], reverse=True) # 按降序[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
zip:聚合传入的每个迭代器中相同位置的元素,返回一个新的元组类型迭代器zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
all:all(iterable)函数用于判断给定的可迭代参数 iterable 中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False。 def all(iterable): for element in iterable: if not element: return False return True
any:any(iterable)any() 函数用于判断给定的可迭代参数 iterable 是否全部为 False,则返回 False,如果有一个为 True,则返回 True。
id:返回对象的唯一标识符id() 函数用于获取对象的内存地址。 >>>a = 'runoob'>>> id(a)4531887632>>> b = 1>>> id(b)140588731085608
hash:获取对象的哈希值
type:返回对象的类型,或者根据传入的参数创建一个新的类型class type(name, bases, dict) # 一个参数实例>>> type(1)<type 'int'>>>> type('runoob')<type 'str'>>>> type([2])<type 'list'>>>> type({0:'zero'})<type 'dict'>>>> x = 1 >>> type( x ) == int # 判断类型是否相等True# 三个参数>>> class X(object):... a = 1...>>> X = type('X', (object,), dict(a=1)) # 产生一个新的类型 X>>> X<class '__main__.X'>class A: passclass B(A): passisinstance(A(), A) # returns Truetype(A()) == A # returns Trueisinstance(B(), A) # returns Truetype(B()) == A # returns False
len:返回对象的长度len() 方法返回对象(字符、列表、元组等)长度或项目个数。
vars:返回当前作用域内的局部变量和其值组成的字典,或者返回对象的属性列表vars() 函数返回对象object的属性和属性值的字典对象。 >>> class A(object): pass>>> a.__dict__{}>>> vars(a){}>>> a.name = 'Kim'>>> a.__dict__{'name': 'Kim'}>>> vars(a){'name': 'Kim'}
isinstance:判断对象是否是类或者类型元组中任意类元素的实例isinstance(object, classinfo)
issubclass:判断类是否是另外一个类或者类型元组中任意类元素的子类issubclass(class, classinfo) >>> issubclass(bool,int)True>>> issubclass(bool,str)False>>> issubclass(bool,(str,int))True
hasattr:检查对象是否含有属性hasattr(object, name)
getattr:获取对象的属性值getattr(object, name[, default]) >>> class Student: def __init__(self,name): self.name = name>>> getattr(s,'name') #存在属性name'Aim'>>> getattr(s,'age',6) #不存在属性age,但提供了默认值,返回默认值>>> getattr(s,'age') #不存在属性age,未提供默认值,调用报错Traceback (most recent call last): File '<pyshell#17>', line 1, in <module> getattr(s,'age')AttributeError: 'Stduent' object has no attribute 'age'
setattr:设置对象的属性值setattr(object, name, value)
delattr:删除对象的属性delattr(object, name) #定义类A>>> class A: def __init__(self,name): self.name = name def sayHello(self): print('hello',self.name)#测试属性和方法>>> a.name'小麦'>>> a.sayHello()hello 小麦#删除属性>>> delattr(a,'name')>>> a.nameTraceback (most recent call last): File '<pyshell#47>', line 1, in <module> a.nameAttributeError: 'A' object has no attribute 'name'
callable:检测对象是否可被调用callable(object)
globals:返回当前作用域内的全局变量和其值组成的字典globals() 函数会以字典类型返回当前位置的全部全局变量。 >>>a='runoob'>>> print(globals()) # globals 函数返回一个全局变量的字典,包括所有导入的变量。{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, 'a': 'runoob', '__package__': None}
locals:返回当前作用域内的局部变量和其值组成的字典locals() 函数会以字典类型返回当前位置的全部局部变量。
print:向标准输出对象打印输出print(*objects, sep=’ ‘, end=’\n’, file=sys.stdout) >>> print('www','runoob','com',sep='.') # 设置间隔符www.runoob.com>>> print(1,2,3,sep = '+',end = '=?')1+2+3=?
input:读取用户输入值Python3.x 中 input() 函数接受一个标准输入数据,返回为 string 类型。
eval:执行动态表达式求值eval(expression[, globals[, locals]]) >>>x = 7>>> eval( '3 * x' )21>>> eval('pow(2,2)')4>>> eval('2 + 2')4>>> n=81>>> eval('n + 4')85
compile:将字符串编译为代码或者AST对象,使之能够通过exec语句来执行或者eval进行求值compile() 函数将一个字符串编译为字节代码。
exec:执行动态语句块>>> exec('a=1+2') #执行语句>>> a3
repr:返回一个对象的字符串表现形式(给解释器)repr() 函数将对象转化为供解释器读取的形式。
property:标示属性的装饰器property() 函数的作用是在新式类中返回属性值。 >>> class C: def __init__(self): self._name = '' @property def name(self): '''i'm the 'name' property.''' return self._name @name.setter def name(self,value): if value is None: raise RuntimeError('name can not be None') else: self._name = value >>> c = C()>>> c.name # 访问属性''>>> c.name = None # 设置属性时进行验证Traceback (most recent call last): File '<pyshell#84>', line 1, in <module> c.name = None File '<pyshell#81>', line 11, in name raise RuntimeError('name can not be None')RuntimeError: name can not be None>>> c.name = 'Kim' # 设置属性>>> c.name # 访问属性'Kim'>>> del c.name # 删除属性,不提供deleter则不能删除Traceback (most recent call last): File '<pyshell#87>', line 1, in <module> del c.nameAttributeError: can't delete attribute>>> c.name'Kim'
classmethod:标示方法为类方法的装饰器classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。
staticmethod:标示方法为静态方法的装饰器返回函数的静态方法。 # 使用装饰器定义静态方法>>> class Student(object): def __init__(self,name): self.name = name @staticmethod def sayHello(lang): print(lang) if lang == 'en': print('Welcome!') else: print('你好!') >>> Student.sayHello('en') #类调用,'en'传给了lang参数enWelcome!>>> b = Student('Kim')>>> b.sayHello('zh') #类实例对象调用,'zh'传给了lang参数zh你好
好了,写了三天了,内置函数就先写这么多,以上三个函数,需要在面向对象的详细理解并说明。 vars()查看内置全局变量以字典方式返回内置全局变量
_doc_ :获取文件的注释'''这里是文件的注释'''print(__doc__) #__doc__ :获取文件的注释#输出# 这里是文件的注释
_file_ 【重点】获取当前文件的路径_file_ ,一般配合os模块的os.path.dirname(),os.path.basename() ,os.path.join() 模块函数来使用
_package_ :获取导入文件的路径多层目录以点分割,注意:对当前文件返回Noneprint(__package__) #注意:对当前文件返回Nonefrom lib.ska import mk #导入mk模块文件print(mk.__package__) #__package__ :获取导入文件的路径,多层目录以点分割,注意:对当前文件返回None#输出# None# lib.ska# lib.ska
_cached_ :获取导入文件的缓存路径
_name_ 获取导入文件的路径加文件名称路径以点分割,获取当前文件返回_main_print(__name__) #注意:获取当前文件返回__main__from lib.ska import mk #导入mk模块文件print(mk.__name__) #获取导入文件的路径加文件名称,路径以点分割#输出# __main__# lib.ska.mk
ok,这一节就写到这吧,还有一些关于文件操作的函数没写出来,文件操作需要另写一篇,才能加深理解,而且现在文件操作用的还不是很熟悉,等用熟悉了在写吧。 |
|