python 内置函数(5)

2018-09-26 18:14:15   最后更新: 2018-09-26 18:14:15   访问数量:49




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

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

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

 

实例

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

 

 

也可以设置参数:

#!/usr/bin/python # -*- coding: UTF-8 -*- 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" 是必须的

 

 

输出结果为:

网站名:菜鸟教程, 地址 www.runoob.com

网站名:菜鸟教程, 地址 www.runoob.com

网站名:菜鸟教程, 地址 www.runoob.com

 

也可以向 str.format() 传入对象:

#!/usr/bin/python # -*- coding: UTF-8 -*- class AssignValue(object): def __init__(self, value): self.value = value my_value = AssignValue(6) print('value 为: {0.value}'.format(my_value)) # "0" 是可选的

 

 

输出结果为:

value 为: 6

 

数字格式化

>>> print("{:.2f}".format(3.1415926)); 3.14

 

 

下表展示了 str.format() 格式化数字的多种方法:

数字格式输出描述
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)1011进制
11'{:d}'.format(11)11进制
11'{:o}'.format(11)13进制
11'{:x}'.format(11)b进制
11'{:#x}'.format(11)0xb进制
11'{:#X}'.format(11)0xB进制

 

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

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

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

 

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

#!/usr/bin/python # -*- coding: UTF-8 -*- print ("{} 对应的位置是 {{0}}".format("runoob"))

 

 

输出结果为:

runoob 对应的位置是 {0}

 

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

 

语法

len()方法语法:

len( s )

 

 

参数

  • s -- 对象。

 

返回值

返回对象长度。

 

实例

以下实例展示了 len() 的使用方法:

&gt;&gt;&gt;str = &quot;runoob&quot; &gt;&gt;&gt; len(str) # 字符串长度 6 &gt;&gt;&gt; l = [1,2,3,4,5] &gt;&gt;&gt; len(l) # 列表元素个数 5

 

 

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

 

语法

以下是 property() 方法的语法:

class property([fget[, fset[, fdel[, doc]]]])

 

 

参数

  • fget -- 获取属性值的函数
  • fset -- 设置属性值的函数
  • fdel -- 删除属性值函数
  • doc -- 属性描述信息

 

返回值

返回新式类属性。

 

实例

  • 定义一个可控属性值 x
class C(object): def __init__(self): self._x = None def getx(self): return self._x def setx(self, value): self._x = value def delx(self): del self._x x = property(getx, setx, delx, &quot;I'm the 'x' property.&quot;)

 

如果 c 是 C 的实例化, c.x 将触发 getter,c.x = value 将触发 setter , del c.x 触发 deleter。

如果给定 doc 参数,其将成为这个属性值的 docstring,否则 property 函数就会复制 fget 函数的 docstring(如果有的话)。

 

  • 将 property 函数用作装饰器可以很方便的创建只读属性:
class Parrot(object): def __init__(self): self._voltage = 100000 @property def voltage(self): &quot;&quot;&quot;Get the current voltage.&quot;&quot;&quot; return self._voltage

 

上面的代码将 voltage() 方法转化成同名只读属性的 getter 方法。

 

  • property 的 getter,setter 和 deleter 方法同样可以用作装饰器:
class C(object): def __init__(self): self._x = None @property def x(self): &quot;&quot;&quot;I'm the 'x' property.&quot;&quot;&quot; return self._x @x.setter def x(self, value): self._x = value @x.deleter def x(self): del self._x

 

这个代码和第一个例子完全相同,但要注意这些额外函数的名字和 property 下的一样,例如这里的 x。

 

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

 

isinstance() 与 type() 区别:

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

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

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

 

语法

以下是 type() 方法的语法:

type(object) type(name, bases, dict)

 

 

参数

  • name -- 类的名称。
  • bases -- 基类的元组。
  • dict -- 字典,类内定义的命名空间变量。

 

返回值

一个参数返回对象类型, 三个参数,返回新的类型对象。

 

实例

以下展示了使用 type 函数的实例:

# 一个参数实例 &gt;&gt;&gt; type(1) &lt;type 'int'&gt; &gt;&gt;&gt; type('runoob') &lt;type 'str'&gt; &gt;&gt;&gt; type([2]) &lt;type 'list'&gt; &gt;&gt;&gt; type({0:'zero'}) &lt;type 'dict'&gt; &gt;&gt;&gt; x = 1 &gt;&gt;&gt; type( x ) == int # 判断类型是否相等 True # 三个参数 &gt;&gt;&gt; class X(object): ... a = 1 ... &gt;&gt;&gt; X = type('X', (object,), dict(a=1)) # 产生一个新的类型 X &gt;&gt;&gt; X &lt;class '__main__.X'&gt;

 

 

type() 与 isinstance()区别:

class A: pass class B(A): pass isinstance(A(), A) # returns True type(A()) == A # returns True isinstance(B(), A) # returns True type(B()) == A # returns False

 

 

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

 

语法

以下是 chr() 方法的语法:

chr(i)

 

参数

  • i -- 可以是10进制也可以是16进制的形式的数字。

返回值

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

 

实例

以下展示了使用 chr() 方法的实例:

&gt;&gt;&gt;print chr(0x30), chr(0x31), chr(0x61) # 十六进制 0 1 a &gt;&gt;&gt; print chr(48), chr(49), chr(97) # 十进制 0 1 a

 

 

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

 

语法

frozenset() 函数语法:

class frozenset([iterable])

 

 

参数

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

 

返回值

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

 

实例

以下实例展示了 frozenset() 的使用方法:

&gt;&gt;&gt;a = frozenset(range(10)) # 生成一个新的不可变集合 &gt;&gt;&gt; a frozenset([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) &gt;&gt;&gt; b = frozenset('runoob') &gt;&gt;&gt; b frozenset(['b', 'r', 'u', 'o', 'n']) # 创建不可变集合 &gt;&gt;&gt;

 

 

list() 方法用于将元组转换为列表。

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

 

语法

list()方法语法:

list( seq )

 

 

参数

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

 

返回值

返回列表。

 

实例

以下实例展示了 list()函数的使用方法:

#!/usr/bin/python3 aTuple = (123, 'Google', 'Runoob', 'Taobao') list1 = list(aTuple) print ("列表元素 : ", list1) str="Hello World" list2=list(str) print ("列表元素 : ", list2)

 

 

以上实例输出结果如下:

列表元素 : [123, 'Google', 'Runoob', 'Taobao'] 列表元素 : ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']

 

 

python range() 函数可创建一个整数列表,一般用在 for 循环中。

 

语法

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)

 

实例

>>>range(10) # 从 0 开始到 10 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(1, 11) # 从 1 开始到 11 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> range(0, 30, 5) # 步长为 5 [0, 5, 10, 15, 20, 25] >>> range(0, 10, 3) # 步长为 3 [0, 3, 6, 9] >>> range(0, -10, -1) # 负数 [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] >>> range(0) [] >>> range(1, 0) []

 

 

以下是 range 在 for 中的使用,循环出runoob 的每个字母:

>>>x = 'runoob' >>> for i in range(len(x)) : ... print(x[i]) ... r u n o o b >>>

 

 

 

vars() 函数返回对象object的属性和属性值的字典对象。

 

语法

vars() 函数语法:

vars([object])

 

 

参数

  • object -- 对象

 

返回值

返回对象object的属性和属性值的字典对象,如果没有参数,就打印当前调用位置的属性和属性值 类似 locals()。

 

实例

以下实例展示了 vars() 的使用方法:

&gt;&gt;&gt;print(vars()) {'__builtins__': &lt;module '__builtin__' (built-in)&gt;, '__name__': '__main__', '__doc__': None, '__package__': None} &gt;&gt;&gt; class Runoob: ... a = 1 ... &gt;&gt;&gt; print(vars(Runoob)) {'a': 1, '__module__': '__main__', '__doc__': None} &gt;&gt;&gt; runoob = Runoob() &gt;&gt;&gt; print(vars(runoob)) {}

 

 

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

 

语法

classmethod 语法:

classmethod

 

 

参数

  • 无。

 

返回值

返回函数的类方法。

 

实例

以下实例展示了 classmethod 的使用方法:

#!/usr/bin/python # -*- coding: UTF-8 -*- class A(object): bar = 1 def func1(self): print ('foo') @classmethod def func2(cls): print ('func2') print (cls.bar) cls().func1() # 调用 foo 方法 A.func2() # 不需要实例化

 

 

输出结果为:

func2

1

foo

 

 






读书笔记      技术帖      龙潭书斋      python      python3     


京ICP备15018585号