Python学习系列之内置函数总结

1. abs()

描述:返回数字的绝对值,不改变数据类型和数据精度

语法:abs( x )

参数:x -- 数值表达式

返回值:x(数字)的绝对值

2. all()

描述:all() 函数用于判断给定的可迭代参数 iterable 中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False。元素除了是 0、空、None、False 外都算 True

语法:all(iterable)

参数:iterable -- 元组或列表

返回值:如果iterable的所有元素不为0、''、False或者iterable为空,all(iterable)返回True,否则返回False;注意:空元组、空列表返回值为True。

3. any()

描述:any() 函数用于判断给定的可迭代参数 iterable 是否全部为 False,则返回 False,如果有一个为 True,则返回 True。也就是可迭代参数中的元素有一个为True则返回True,否则返回False。元素除了是 0、空、None、FALSE 外都算 TRUE

语法:any(iterable)

参数:iterable -- 元组或列表

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

4. basestring()

描述:basestring() 方法是 str 和 unicode 的超类(父类),也是抽象类,因此不能被调用和实例化,但可以被用来判断一个对象是否为 str 或者 unicode 的实例,isinstance(obj, basestring) 等价于 isinstance(obj, (str, unicode))

语法:basestring()

参数:

返回值:

5. bin()

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

语法:bin(x)

参数:x -- int 或者 long int 数字

返回值:字符串

6. bool()

描述:bool() 函数用于将给定参数转换为布尔类型,如果没有参数,返回 False。bool 是 int 的子类。转换原则是 0、空、None、FALSE 是Flase,其他的是True。

空列表,空集合,空元组,空字典都是False,否则是True。

语法:class bool([x])

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

返回值:返回 Ture 或 False。

7. bytearray()

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

语法:class bytearray([source[, encoding[, errors]]])

参数:

  • 如果 source 为整数,则返回一个长度为 source 的初始化数组(全0);
  • 如果 source 为字符串,则按照指定的 encoding 将字符串转换为字节序列;
  • 如果 source 为可迭代类型,则元素必须为[0 ,255] 中的整数(字符串必须是长度为1的字符,然后把字符转为ASCII码);
  • 如果 source 为与 buffer 接口一致的对象,则此对象也可以被用于初始化 bytearray。
  • 如果没有输入任何参数,默认就是初始化数组为0个元素。

返回值:返回 Ture 或 False。

8. callable()

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

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

魔术方法:

__call__使实例能够像函数一样被调用(可调用对象),同时不影响实例本身的生命周期,可以用来改变实例的内部成员的值(改变类实例的状态)。 x() 与 x.__call__() 等同。

__init__ 函数的意义等同于类的构造器(同理,__del__等同于类的析构函数)

语法:callable(object)

参数:object -- 对象

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

9. chr()

描述:chr() 用一个范围在 range(256)内的(就是0~255)整数作参数(ASCII码对应的数值),返回一个对应的字符。

语法:chr(i)

参数:i -- 可以是10进制也可以是16进制(0x或0X)的形式的数字。

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

10. classmethod()

描述:classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数(需要传入类本身作为参数,否则访问出错),可以来调用类的属性,类的方法,实例化对象等。将普通方法转为类方法,作用同装饰器@classmethod。在类中调用,将实例方法转为类方法。

语法:classmethod(function)

参数:function -- 类中实例方法。

返回值:返回普通函数(实例方法)的类方法。

11. cmp()

描述:cmp(x,y) 函数用于比较2个对象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。

数字:数字大小。

字符串:每个字符的ASCII码的大小。

语法:cmp(x, y)

参数:

  • x -- 数值表达式。
  • y -- 数值表达式。

返回值:如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。

12. compile()

描述:compile() 函数将一个字符串编译为字节代码。然后使用exec, eval, single函数执行。

语法:compile(source, filename, mode[, flags[, dont_inherit]])

参数:

  • source -- 字符串或者AST(Abstract Syntax Trees)对象。。
  • filename -- 代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。
  • mode -- 指定编译代码的种类。可以指定为 exec, eval, single。
  • flags -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。。
  • flags和dont_inherit是用来控制编译源码时的标志

返回值:返回表达式执行结果。

13. complex()

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

z=a+bi(a,b均为实数)的数称为复数,其中a称为实部,b称为虚部,i称为虚数单位。当z的虚部等于零时,常称z为实数;当z的虚部不等于零时,实部等于零时,常称z为纯虚数。

语法:class complex([real[, imag]])

参数:

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

返回值:返回一个复数。即使虚部为0(实数),格式也是虚数。

14. delattr()

描述:delattr 函数用于删除类实例对象的属性。再次访问会出错。

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

语法:delattr(object, name)

参数:

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

返回值:无。

访问报错:

Traceback (most recent call last):
  File "test.py", line 22, in <module>
    print('z = ',point1.z)
AttributeError: Coordinate instance has no attribute 'z'

15. dict()

描述:dict() 函数用于创建一个字典。

语法:

class dict(**kwarg)
class dict(mapping, **kwarg)
class dict(iterable, **kwarg)

参数:

  • **kwargs -- 关键字
  • mapping -- 元素的容器。
  • iterable -- 可迭代对象。

返回值:返回一个字典。

>>>dict()                        # 创建空字典
{}

>>> dict({'three': 3, 'four': 4})  # 传一个字典

>>> dict(a='a', b='b', t='t')     # 传入关键字
{'a': 'a', 'b': 'b', 't': 't'}

>>> dict(zip(['one', 'two', 'three'], [1, 2, 3]))   # 映射函数方式来构造字典
{'three': 3, 'two': 2, 'one': 1} 

>>> dict([('one', 1), ('two', 2), ('three', 3)])    # 可迭代对象方式来构造字典:包含一个或多个元组的列表
{'three': 3, 'two': 2, 'one': 1}

16. dir()

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

语法:dir([object])

参数:object -- 对象、变量、类型

返回值:返回模块的属性列表

>>>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']

17. divmod()

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

在 python 2.3 版本之前不允许处理复数。

语法:divmod(a, b)

参数:

  • a: 数字
  • b: 数字

返回值:包含商和余数元组。

18. enumerate()

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

Python 2.3. 以上版本可用,2.6 添加 start 参数。

语法:enumerate(sequence, [start=0])

参数:

  • sequence -- 一个序列、迭代器或其他支持迭代对象。
  • start -- 下标起始位置。

返回值:返回 enumerate(枚举) 对象。

19. eval()

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

语法:eval(expression[, globals[, locals]])

参数:

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

返回值:返回表达式计算结果。

20. execfile()

描述:execfile() 函数可以用来执行一个文件。

语法:execfile(filename[, globals[, locals]])

参数:

  • filename -- 文件名。
  • globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
  • locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。

返回值:返回文件内内容的执行结果。

python3 删去了 execfile(),代替方法如下:

with open('test1.py','r') as f:
    exec(f.read())

21. file()

描述:file() 函数用于创建一个 file 对象,它有一个别名叫 open(),更形象一些,它们是内置函数。参数是以字符串的形式传递的。

file是类,open才是内置函数。

语法:file(name[, mode[, buffering]])

参数:

  • name -- 文件名
  • mode -- 打开模式
  • buffering -- 0 表示不缓冲,如果为 1 表示进行行缓冲,大于 1 为缓冲区大小。

返回值:文件对象。

22. filter()

描述:filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

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

注意: Pyhton2.7 返回列表,Python3.x 返回迭代器对象。 filter 类对象。filter 类实现了 __iter__ 和 __next__ 方法, 可以看成是一个迭代器, 有惰性运算的特性, 相对 Python2.x 提升了性能, 可以节约内存。

语法:filter(function, iterable)

参数:

  • function -- 判断函数。
  • iterable -- 可迭代对象。

返回值:返回列表。

判断整数:math.sqrt(x) % 1 == 0

23. float()

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

语法:class float([x])

参数:x -- 整数或字符串

返回值:返回浮点数。

24. format()

描述:Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。

基本语法是通过 {} 和 : 来代替以前的 % 。

format 函数可以接受不限个参数,位置可以不按顺序。

语法:str.format(参数)

参数:需要格式化的参数(字符串,整数,浮点数)。

返回值:格式化后的字符串。

>>>"{} {}".format("hello", "world")    # 不设置指定位置,按默认顺序
'hello world'
 
>>> "{0} {1}".format("hello", "world")  # 设置指定位置
'hello world'
 
>>> "{1} {0} {1}".format("hello", "world")  # 设置指定位置
'world hello world'

# 设置参数
print("网站名:{name}, 地址 {url}".format(name="菜鸟教程", url="www.runoob.com"))
 
# 通过字典设置参数
site = {"name": "菜鸟教程", "url": "www.runoob.com"}
print("网站名:{name}, 地址 {url}".format(**site))
 
# 通过列表索引设置参数
my_list = ['菜鸟教程', 'www.runoob.com']
print("网站名:{0[0]}, 地址 {0[1]}".format(my_list))  # "0" 是必须的

# 传入对象
class AssignValue(object):
    def __init__(self, value):
        self.value = value
my_value = AssignValue(6)
print('value 为: {0.value}'.format(my_value))  # "0" 是可选的

格式化数字:

数字 格式 输出 描述
3.1415926 {:.2f} 3.14 保留小数点后两位
3.1415926 {:+.2f} +3.14 带符号保留小数点后两位
-1 {:+.2f} -1.00 带符号保留小数点后两位
2.71828 {:.0f} 3 不带小数
5 {:0>2d} 05 数字补零 (填充左边, 宽度为2)
5 {:x<4d} 5xxx 数字补x (填充右边, 宽度为4)
10 {:x<4d} 10xx 数字补x (填充右边, 宽度为4)
1000000 {:,} 1,000,000 以逗号分隔的数字格式
0.25 {:.2%} 25.00% 百分比格式
1000000000 {:.2e} 1.00e+09 指数记法
13 {:10d}         13 右对齐 (默认, 宽度为10)
13 {:<10d} 13 左对齐 (宽度为10)
13 {:^10d}     13 中间对齐 (宽度为10)
11
'{:b}'.format(11)
'{:d}'.format(11)
'{:o}'.format(11)
'{:x}'.format(11)
'{:#x}'.format(11)
'{:#X}'.format(11)
1011
11
13
b
0xb
0XB
进制

^, <, > 分别是居中、左对齐、右对齐,后面带宽度, : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。

+ 表示在正数前显示 +,负数前显示 -;  (空格)表示在正数前加空格

b、d、o、x 分别是二进制、十进制、八进制、十六进制。

此外我们可以使用大括号 {} 来转义大括号,如下实例: 

print ("{} 对应的位置是 {{0}}".format("runoob"))

25. frozenset()

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

语法:class frozenset([iterable])  类

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

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

返回不可变集合。

26. getattr()

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

语法:getattr(object, name[, default])

参数:

  • object -- 对象。
  • name -- 字符串,对象属性(名)。
  • default -- 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError。

返回值:返回对象属性值。

27. globals()

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

语法:globals()

参数:无。

返回值:返回一个全局变量的字典,除了内置变量,还包括所有导入的变量。

{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, 'a': 'runoob', '__package__': None}

Python里只有2种作用域:全局作用域和局部作用域。全局作用域是指当前代码所在模块的作用域,局部作用域是指当前函数或方法所在的作用域。局部作用域里的代码可以读外部作用域(包括全局作用域)里的变量,但不能更改它。如果想更改它,这里就要使用global关键字了。

具体来看分以下几种情况:

1. 当你直接在局部域读取全局变量,可以直接使用。

2. 当你直接在局部域修改全局变量分两种情况:但是我们一定无法直接修改全局变量。

(1)比如a+=1的情况,是必须要首先声明变量才能执行。所以会报错,未声明该变量。

(2)比如a=1的情况,则系统认为你声明a局部变量,所以不会报错。但并不是修改全局变量。

3. 要想在局部域修改全局变量,可以使用global关键字首先声明该变量,然后修改。

4. 如果提前在局部域声明了该全局变量的同名变量,则覆盖全局变量(包括读取和修改)。

在Python 2.x中,闭包只能读外部函数的变量,而不能改写它。为了解决这个问题,Python 3.x引入了nonlocal关键字,在闭包内用nonlocal声明变量,就可以让解释器在外层函数中查找变量名。

注意:关键字nonlocal:是python3.X中出现的,所以在python2.x中无法直接使用.

28. hasattr()

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

语法:hasattr(object, name)

参数:

  • object -- 对象。
  • name -- 字符串,属性名。

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

29. hash()

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

语法:hash(object)

参数:

  • object -- 对象;

返回值:返回对象的哈希值。hash 值都是固定长度的。

可以应用于数字、字符串和对象,不能直接应用于 list、set、dictionary。

在 hash() 对对象使用时,所得的结果不仅和对象的内容有关,还和对象的 id(),也就是内存地址有关。

30. help()

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

语法:help([object])

参数:

  • object -- 对象;

返回值:返回对象帮助信息。

可以直接传入字符串,比如'sys','print'。

还可以直接传入类实例对象,返回该实例对象对应类的帮助信息,直接传入类实例对象的属性,返回该实例对象对应类属性的帮助信息。

31. hex()

描述:hex() 函数用于将10进制整数转换成16进制,以字符串形式表示。

语法:hex(x)

参数:

  • x -- 10进制整数

返回值:返回16进制数,以字符串形式表示。

32. id()

描述:id() 函数用于获取对象的内存地址。

语法:id([object])

参数:

  • object -- 对象(包括数字,字符串,布尔变量,类,类示例等任何对象)。

返回值:返回对象的内存地址。

33. input()

描述:

Python3.x 中 input() 函数接受一个标准输入数据,返回为 string 类型。

Python2.x 中 input() 相等于 eval(raw_input(prompt)) ,用来获取控制台的输入。raw_input() 将所有输入作为字符串看待,返回字符串类型。而 input() 在对待纯数字输入时具有自己的特性,它返回所输入的数字的类型( int, float )。

注意:Python2 input() 和 raw_input() 这两个函数均能接收 字符串 ,但 raw_input() 直接读取控制台的输入(任何类型的输入它都可以接收)。而对于 input() ,它希望能够读取一个合法的 python 表达式,即你输入字符串的时候必须使用引号将它括起来,否则它会引发一个 SyntaxError 。

除非对 input() 有特别需要,否则一般情况下我们都是推荐使用 raw_input() 来与用户交互。

注意:python3 里 input() 默认接收到的是 str 类型,不要求是合法python表达式。

语法:input([prompt])

参数:

  • prompt: 提示信息

返回值:返回输入内容。

34. int()

描述:int() 函数用于将一个字符串或数字转换为整型。对于浮点数向下取整。

语法:class int(x, base=10)

参数:

  • x -- 字符串或数字。
  • base -- 进制数,默认十进制。(指定输入的x的进制,输出都是十进制)

返回值:返回整型数据。不传入参数时,得到结果0。

35. isinstance()

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

isinstance() 与 type() 区别:

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

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

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

语法:isinstance(object, classinfo)

参数:

  • object -- 实例对象。
  • classinfo -- 可以是直接或间接类名、基本类型或者由它们组成的元组(多个选项)。

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

type(A()) == A

type()函数返回对象类型,但不考虑父类(继承)关系。

基本类型包括:int,float,bool,complex,str(字符串),list,dict(字典),set,tuple。

除了基本类型就是类(系统类或自定义)。

36. issubclass()

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

语法:issubclass(class, classinfo)

参数:

  • class -- 类。
  • classinfo -- 类。

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

两个类之间的比较。

37. iter()

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

语法:iter(object[, sentinel])

参数:

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

返回值:迭代器对象。

38. len()

描述:len() 方法返回对象(字符、列表、元组、字典、集合等)长度或项目个数。

语法:len( s )

参数:

  • s -- 对象(字符、列表、元组、字典、集合等)。

返回值:返回对象长度。

39. list()

描述:list() 方法用于将元组转换为列表。(元组和列表相同包括索引和访问,除了不能修改。而集合和字典都无法使用索引进行访问)

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

语法:list( tup )

参数:

  • tup -- 要转换为列表的元组。

返回值:返回列表。

40. locals()

描述:locals() 函数会以字典类型返回当前位置(当前模块或下层局部域,比如类内,函数内等)的全部局部变量。

语法:locals()

参数:

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

函数的话包括函数的形参及所有定义的其他变量。

41. long()

描述:long() 函数将数字或字符串转换为一个长整型。

语法:class long(x, base=10)

参数:

  • x -- 字符串或数字。
  • base -- 可选,进制数,默认十进制。

返回值:返回长整型数。输出带有L结尾。

42. map()

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

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

语法:map(function, iterable, ...)

参数:

  • function -- 函数
  • iterable -- 一个或多个序列

返回值:

Python 2.x 返回列表。

Python 3.x 返回迭代器。

# 提供了两个列表,对相同位置的列表数据进行相加
>>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
[3, 7, 11, 15, 19]

43. max()

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

语法:max( x, y, z, .... )

参数:

  • x -- 数值表达式。
  • y -- 数值表达式。
  • z -- 数值表达式。

返回值:返回给定参数的最大值。

1 . 列表数字

直接比较大小即可。

2. 字符串

>>> a='1,2,3,4'
>>> type(a)             #类型为字符串
<type 'str'>
>>> max(a)              #max 返回了最大值
'4'

3. 列表里面是元组构成元素

按照元素里面元组的第一个元素的排列顺序,输出最大值(如果第一个元素相同,则比较第二个元素,输出最大值)据推理是按ascii码进行排序的,类似于字符串的比较。

4. 比较字典

比较字典里面的最大值,会输出最大的键值。因为键值不重复,所以不会出现元组重复的情况。(注:字典中如果键重复,后一个会覆盖前一个)

44. memoryview()

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

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

语法:memoryview(obj)

参数:

  • obj -- 对象

返回值:返回元组列表。

Python2

>>>v = memoryview('abcefg')
>>> v[1]
'b'
>>> v[-1]
'g'
>>> v[1:4]
<memory at 0x77ab28>
>>> v[1:4].tobytes()
'bce'

Python3

>>>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'

 

45. min()

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

语法:min( x, y, z, .... ) 

参数:

  • x -- 数值表达式。
  • y -- 数值表达式。
  • z -- 数值表达式。

返回值:返回给定参数的最小值。

可变参数:多个数值或数值表达式,输出这几个参数的最小值

多个序列,以序列的形式输出,将单个序列的最小值组成一个序列。

46. next()

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

语法:next(iterator[, default])

参数:

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

返回值:返回迭代器的元素。

47. object()

描述:返回一个新的无特征对象,object是所有类的基类,有所有Python类实例的通用方法,该函数不接受任何参数。

注意:object没有__dict__方法,所以你不能给某个object类的实例分配任意属性。

其他类可直接设置属性:

#定义一个类A
>>> class A:
    pass
>>> a = A()
>>> a.name = 'kim' # 能设置属性

语法:o = object()

参数:无。

返回值:返回一个object的实例对象。

>>> dir(object)
['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']

python的__slots__设计是为了节省内存,也可以用于构造安全的类、如果一个类使用了__slots__那么它的属性就不再自由了。 

slots__设置非自由属性 

class person(object):
    __slots__=('Name','Age')

    def __init__(self,name,age):
        self.Name=name #注意,__init__的执行在__slots__之后;所以就算在__init__方法里也是不能执行self.ID=007的。
        self.Age=age

if__name__=='__main__':
      p=person('jiangle',100)
      p.ID=7 #这里会报错,由于我们使用了__slots__来声明属性,所以属性再也不是自由的了。

__new__ and __init__
新式类都有一个__new__的静态方法,它的原型是object.__new__(cls[, ...]) 
cls是一个类对象,当调用C(*args, **kargs)来创建一个类C的实例时,python的内部调用是 :

  1. C.__new__(C, *args, **kargs)
  2. 然后返回值是类C的实例c
  3. 确认c是C的实例后
  4. python再调用C.__init__(c, *args, **kargs)来初始化实例c

所以调用一个实例c = C(2),实际执行的代码为:
 

c = C.__new__(C, 2) 
if isinstance(c, C):     
    C.__init__(c, 23)#__init__第一个参数要为实例对象 

object.__new__()创建的是一个新的,没有经过初始化的实例。当重写__new__方法时,可以不用使用装饰符@staticmethod指明它是静态函数,解释器会自动判断这个方法为静态方法。如果需要重新绑定C.__new__方法时,只要在类外面执行C.__new__ = staticmethod(yourfunc)就可以了。

此外,如果(新式)类中没有重写__new__()方法,即在定义新式类时没有重新定义__new__()时,Python默认是调用该类的直接父类的__new__()方法来构造该类的实例,如果该类的父类也没有重写__new__(),那么将一直按此规矩追溯至object的__new__()方法,因为object是所有新式类的基类。 

__repr__ and __str__

print(someobj)会调用someobj.str(), 如果str没有定义,则会调用someobj.repr().

48. oct()

描述:oct() 函数将一个整数转换成8进制字符串。

语法:oct(x)

参数:

  • x -- 整数。

返回值:返回8进制字符串。

以0开头。

49. open()

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

语法:open(name[, mode[, buffering]])

参数:

  • name : 一个包含了你要访问的文件名称的字符串值(文件路径)。

  • mode : mode 决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。

  • buffering : 如果 buffering 的值被设为 0,就不会有缓存。如果 buffering 的值取 1,访问文件时会缓存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的缓存区的缓冲大小。如果取负值,缓存区的缓冲大小则为系统默认。

返回值:返回file对象。

模式 描述
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() 关闭文件

50. ord()

描述:ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。

语法:ord(c)

参数:c -- 字符(长度为1的字符串)

返回值:对应的十进制整数

51. pow() 

描述:pow() 方法返回 x^y(x的y次方) 的值。

语法:

math 模块 pow() 方法的语法:
math.pow( x, y )

内置的 pow() 方法
pow(x, y[, z])

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

pow(x,y) 等价于 x**y:

pow(x,y,z) 等价于 x**y%z:

注意:pow() 通过内置的方法直接调用,math 模块会把参数转换为 float,内置方法不修改参数类型:py2和py3相同。

math.pow(11.2,3.2)
Out[39]: 2277.7060352240815
math.pow(100, 2)
Out[40]: 10000.0

pow(11.2,3.2)
Out[42]: 2277.7060352240815
pow(100, 2)
Out[43]: 10000

pow(x,y,z) 当 z 这个参数不存在时 x,y 不限制是否为 float 类型, 而当使用第三个参数的时候要保证前两个参数只能为整数。

>>> pow(11.2,3.2)
2277.7060352240815
>>> pow(11.2,3.2,2)   # 结果报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: pow() 3rd argument not allowed unless all arguments are integers

参数:

  • x -- 数值表达式。
  • y -- 数值表达式。
  • z -- 数值表达式。

返回值:返回 x^y(x的y次方) 的值。

 

参考:https://docs.python.org/zh-cn/3.7/library/functions.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章