Python3内置函数(三)
bin()
bin()返回一个整数 int 或者长整数 long int 的二进制表示。
语法: bin(x)
参数: x -- int 或者 long int 数字
返回值: 字符串。
实例:
>>>bin(10)
'0b1010'
eval()
eval() 函数用来执行一个字符串表达式,并返回表达式的值。
语法:
eval(expression[,globals[,locals]])
参数: expression -- 表达式。
globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
返回值: 返回表达式计算结果。
实例:
>>>x=7
>>>eval('3 * x')
21
int()
int() 函数用于将一个字符串会数字转换为整型。
语法: class int(x, base=10)
参数: x -- 字符串或数字。
base -- 进制数,默认十进制。
返回值:返回整型数据。
实例:
>>>int()# 不传入参数时,得到结果0
0
>>>int(3)
3
>>>int(3.6)
3
>>>int('12',16)# 如果是带参数base的话,12要以字符串的形式进行输入,12 为 16进制
18
>>>int('0xa',16)
10
>>>int('10',8)
8
open()
open() 函数用于打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写。
语法:
open(name[,mode[,buffering]])
参数说明:
name : 一个包含了你要访问的文件名称的字符串值。
mode : mode 决定了打开文件的模式:只读,写入,追加等。默认文件访问模式为只读(r)。
buffering : 如果 buffering 的值被设为 0,就不会有寄存。如果 buffering 的值取 1,访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
不同模式打开文件的完全列表:
模式描述
r: 只读,默认
rb: 二进制只读
r+: 打开一个文件用于读写
rb+:以二进制打开一个文件用于读写
w: 打开一个文件只用于写入
w+:打开一个文件用于读写,存在则覆盖,不存在则创建
wb+:二进制打开一个文件用于读写,存在则覆盖,不存在则创建
a:打开一个文件追加到已有内容后面,不覆盖,不存在则创建
ab:二进制打开一个文件追加到已有内容后面,不覆盖,不存在则创建
a+:打开一个文件用于读写。如果该文件已存在,文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,如果该文件不存在,创建新文件用于读写。
file 对象方法
file.read([size])size未指定则返回整个文件,如果文件大小>2倍内存则有问题.f.read()读到文件尾时返回""(空字串)
file.readline()返回一行
file.readline([size])返回包含size行的列表,size 未指定则返回全部行
for line in f: print line#通过迭代器访问
f.write("hello\n")#如果要写入字符串以外的数据,先将他转换为字符串.
f.tell()返回一个整数,表示当前文件指针的位置(就是到文件头的比特数).
f.seek(偏移量,[起始位置])用来移动文件指针.
偏移量:单位:比特,可正可负
起始位置:0-文件头,默认值;1-当前位置;2-文件尾
f.close()关闭文件
实例
测试文件 test.txt,内容如下:
RUNOOB1
RUNOOB2
>>>f=open('test.txt')
>>>f.read()
'RUNOOB1\nRUNOOB2\n'
str()
str() 函数将对象转化为适于人阅读的形式。
语法:
classstr(object='')
参数:object -- 对象。
返回值:返回一个对象的string格式。
实例:
bool()
bool()函数用于将给定参数转换为布尔类型,如果没有参数,将返回False
bool是int 的子类
语法:class bool ([x])
参数:x -- 要进行转换的参数。
返回值:返回 Ture 或 False。
实例:
>>>bool()
False
>>>bool(0)
False
>>>bool(1)
True
>>>bool(2)
True
>>>issubclass(bool,int)# bool 是 int 子类
True
isinstance()
isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。
isinstance() 与 type() 区别:
type() 不会认为子类是一种父类类型,不考虑继承关系。
isinstance() 会认为子类是一种父类类型,考虑继承关系。
如果要判断两个类型是否相同推荐使用 isinstance()。
语法:
isinstance(object,classinfo)
参数:
object -- 实例对象。
classinfo -- 可以是直接或间接类名、基本类型或者有它们组成的元组。
返回值:
如果对象的类型与参数二的类型(classinfo)相同则返回 True,否则返回 False。。
实例:
>>>a=2
>>>isinstance(a,int)
True
>>>isinstance(a,str)
False
>>>isinstance(a,(str,int,list))# 是元组中的一个返回 True
True
type() 与 isinstance()区别:
class A :
pass
classB(A):
pass
isinstance(A(),A) # returns True
type(A())==A # returns True
isinstance(B(),A) # returns True
type(B())==A # returns False
exec()
exec 执行储存在字符串或文件中的 Python 语句,相比于 eval,exec可以执行更复杂的 Python 代码。
语法:
exec(object[,globals[,locals]])
参数:
object:必选参数,表示需要被指定的Python代码。它必须是字符串或code对象。如果object是一个字符串,该字符串会先被解析为一组Python语句,然后在执行(除非发生语法错误)。如果object是一个code对象,那么它只是被简单的执行。
globals:可选参数,表示全局命名空间(存放全局变量),如果被提供,则必须是一个字典对象。
locals:可选参数,表示当前局部命名空间(存放局部变量),如果被提供,可以是任何映射对象。如果该参数被忽略,那么它将会取与globals相同的值。
返回值
exec 返回值永远为 None。
实例:
实例 1
>>>exec('print("Hello World")')
HelloWorld
# 单行语句字符串
>>>exec("print ('runoob.com')")runoob.com
# 多行语句字符串
>>>exec("""for i in range(5):
... print ("iter time: %d" % i)
...""")
iter time: 0
iter time: 1
iter time: 2
iter time: 3
iter time: 4
ord()
ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。
语法: ord(c)
参数:c -- 字符。
返回值:返回值是对应的十进制整数。
实例:
>>>ord('a')
97
>>>ord('b')
98
>>>ord('c')
99
sum()
sum()方法对系列进行求和计算。
语法: sum(iterable[,start])
参数:
iterable -- 可迭代对象,如列表。
start -- 指定相加的参数,如果没有设置这个值,默认为0。
返回值:返回计算结果。
实例:
>>>sum([0,1,2])
3
>>>sum((2,3,4),1)# 元组计算总和后再加 1
10
>>>sum([0,1,2,3,4],2)# 列表计算总和后再加 2
12
bytearray()
bytearray()方法返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256。
语法:class bytearray([source[, encoding[, errors]]])
参数
如果 source 为整数,则返回一个长度为 source 的初始化数组;
如果 source 为字符串,则按照指定的 encoding 将字符串转换为字节序列;
如果 source 为可迭代类型,则元素必须为[0 ,255] 中的整数;
如果 source 为与 buffer 接口一致的对象,则此对象也可以被用于初始化 bytearray。
如果没有输入任何参数,默认就是初始化数组为0个元素。
返回值:返回新字节数组。
实例:
>>>bytearray()
bytearray(b'')
>>>bytearray([1,2,3])
bytearray(b'\x01\x02\x03')
>>>bytearray('runoob','utf-8')
bytearray(b'runoob')
>>>
filter()
filter()函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
语法: filter(function, iterable)
参数:function -- 判断函数。
iterable -- 可迭代对象。
返回值:返回列表。
实例:
过滤出列表中的所有奇数:
#!/usr/bin/python# -*-
coding: UTF-8 -*-
def is_odd(n):
return n%2 == 1
newlist = filter(is_odd,[1,2,3,4,5,6,7,8,9,10])
print(newlist)
输出结果 :
[1, 3, 5, 7, 9]
issubclass()
issubclass()方法用于判断参数 class 是否是类型参数 classinfo 的子类。
语法:issubclass(class,classinfo)
参数:class -- 类。classinfo -- 类。
返回值:如果 class 是 classinfo 的子类返回 True,否则返回 False。
实例:
#!/usr/bin/python# -*-
coding: UTF-8 -*-
class A:
pass
class B(A):
pass
print(issubclass(B,A))# 返回 True
pow()
pow()方法返回 xy(x的y次方) 的值。
语法:
import math
math.pow(x,y)
内置的 pow() 方法:pow(x,y[,z])
函数是计算x的y次方,如果z在存在,则再对结果进行取模,其结果等效于pow(x,y) %z
注意:pow() 通过内置的方法直接调用,内置方法会把参数作为整型,而 math 模块则会把参数转换为 float。
参数:
x -- 数值表达式。
y -- 数值表达式。
z -- 数值表达式。
返回值:返回 xy(x的y次方) 的值。
实例:
#!/usr/bin/python3
importmath# 导入 math 模块
print("math.pow(100, 2) : ",math.pow(100,2))
# 使用内置,查看输出结果区别
print("pow(100, 2) : ",pow(100,2))
print("math.pow(100, -2) : ",math.pow(100,-2))
print("math.pow(2, 4) : ",math.pow(2,4))
print("math.pow(3, 0) : ",math.pow(3,0))
以上实例运行后输出结果为:
math.pow(100,2):10000.0
pow(100,2):10000
math.pow(100,-2):0.0001
math.pow(2,4):16.0
math.pow(3,0):1.0
super()
super()函数用于调用下一个父类(超类)并返回该父类实例的方法。
super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。
MRO 就是类的方法解析顺序表, 其实也就是继承父类方法时的顺序表。
语法:
super(type[,object-or-type])
参数:
type -- 类。
object-or-type -- 类,一般是 self
实例:
执行结果:
Parent
Child
HelloWorldfromParent
Childbar fuction
I'm the parent.