day 30 内置函数,内置方法
1 内置函数
接下来,我们就一起来看看python里的内置函数。截止到python版本3.6.2,现在python一共为我们提供了68个内置函数。它们就是python提供给你直接可以拿来使用的所有函数。这些函数有些我们已经用过了,有些我们还没用到过,还有一些是被封印了,必须等我们学了新知识才能解开封印的。那今天我们就一起来认识一下python的内置函数。这么多函数,我们该从何学起呢?
1.1 内置函数分类

1.2 作用域相关

1.3 其他

1.4 和数字相关

1.5 和数据结构相关

1.6 应用
输入输出相关:
input() 输入
s = input("请输入内容 : ") #输入的内容赋值给s变量
print(s) #输入什么打印什么。数据类型是str
print() 输出
def print(self, *args, sep=' ', end='\n', file=None): # known special case of print
"""
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
file: 默认是输出到屏幕,如果设置为文件句柄,输出到文件
sep: 打印多个值之间的分隔符,默认为空格
end: 每一次打印的结尾,默认为换行符
flush: 立即把内容输出到流文件,不作缓存
"""
f = open('tmp_file','w')
print(123,456,sep=',',file = f,flush=True)
import time
for i in range(0,101,2):
time.sleep(0.1)
char_num = i//2 #打印多少个'*'
per_str = '\r%s%% : %s\n' % (i, '*' * char_num) if i == 100 else '\r%s%% : %s'%(i,'*'*char_num)
print(per_str,end='', flush=True)
#小越越 : \r 可以把光标移动到行首但不换行
数据类型相关:
type(o) 返回变量o的数据类型
内存相关:
id(o) o是参数,返回一个变量的内存地址
hash(o) o是参数,返回一个可hash变量的哈希值,不可hash的变量被hash之后会报错。
t = (1,2,3)
l = [1,2,3]
print(hash(t)) #可hash
print(hash(l)) #会报错
'''
结果:
TypeError: unhashable type: 'list'
'''
hash函数会根据一个内部的算法对当前可hash变量进行处理,返回一个int数字。
*每一次执行程序,内容相同的变量hash值在这一次执行过程中不会发生改变。
文件操作相关
open() 打开一个文件,返回一个文件操作符(文件句柄)
操作文件的模式有r,w,a,r+,w+,a+ 共6种,每一种方式都可以用二进制的形式操作(rb,wb,ab,rb+,wb+,ab+)
可以用encoding指定编码.
模块操作相关
__import__导入一个模块
import time
os = __import__('os')
print(os.path.abspath('.'))
帮助方法
在控制台执行help()进入帮助模式。可以随意输入变量或者变量的类型。输入q退出
或者直接执行help(o),o是参数,查看和变量o有关的操作。。。
和调用相关
callable(o),o是参数,看这个变量是不是可调用。
如果o是一个函数名,就会返回True
def func():pass
print(callable(func)) #参数是函数名,可调用,返回True
print(callable(123)) #参数是数字,不可调用,返回False
查看参数所属类型的所有内置方法
dir() 默认查看全局空间内的属性,也接受一个参数,查看这个参数内的方法或变量
print(dir(list)) #查看列表的内置方法
print(dir(int)) #查看整数的内置方法
和数字相关
数字——数据类型相关:bool,int,float,complex
数字——进制转换相关:bin,oct,hex
数字——数学运算:abs,divmod,min,max,sum,round,pow
和数据结构相关
序列——列表和元组相关的:list和tuple
序列——字符串相关的:str,format,bytes,bytearry,memoryview,ord,chr,ascii,repr
ret = bytearray('alex',encoding='utf-8')
print(id(ret))
print(ret[0])
ret[0] = 65
print(ret)
print(id(ret))
ret = memoryview(bytes('你好',encoding='utf-8'))
print(len(ret))
print(bytes(ret[:3]).decode('utf-8'))
print(bytes(ret[3:]).decode('utf-8'))
序列:reversed,slice
l = (1,2,23,213,5612,342,43)
print(l)
print(list(reversed(l)))
l = (1,2,23,213,5612,342,43)
sli = slice(1,5,2)
print(l[sli])
数据集合——字典和集合:dict,set,frozenset
数据集合:len,sorted,enumerate,all,any,zip,filter,map
1.7 掌握
掌握
v1='hello'
v2=[111,222,333,444,5555,6666]
res=zip(v1,v2)
print(list(res))
掌握
print(divmod(10000,33))
掌握
class Foo:
pass
obj=Foo()
obj.xxx=1111
print(dir(obj)) # obj.哪些属性
掌握
for i,v in enumerate(['a','b','c']):
print(i,v)
掌握
res=eval('{"a":1}') # 执行字符串中的表达式
print(res,type(res))
掌握
class Foo:
pass
obj=Foo()
print(isinstance(obj,Foo))
print(isinstance([],list)) # 类型判断推荐使用 isinstance
print(type([]) is list) # 不推荐使用
掌握
import 'time' # 错误
time=__import__('time')
time.sleep(3)
2 类的内置方法
1 什么是内置方法?
定义在类内部,以 __ 开头并以__结果的方法
特点:会在某种情况下自动触发执行
2 为何要用内置方法?
为了定制化我们的类 or 对象
3 如何使用内置方法
__ str__:在打印对象时会自动触发,然后将返回值(必须是字符串类型)当做本次打印的结果输出
__ str__方法会在对象被打印时自动触发,print功能打印的就是它的返回值,我们通常基于方法来定制对象的打印信息,该方法必须返回字符串类型
class People:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
print('运行了...')
return "<%s:%s>" %(self.name,self.age)
obj = People('辣白菜同学', 18)
print(obj.__str__())
print(obj) # <'辣白菜同学':18>
obj1=int(10)
print(obj1)
__ del _ :在清理对象时触发,会先执行该方法。_ del _ 会在对象被删除时自动触发。由于Python自带的垃圾回收机制会自动清理Python程序的资源,所以当一个对象只占用应用程序级资源时,完全没必要为对象定制_ del _ _方法,但在产生一个对象的同时涉及到申请系统资源(比如系统打开的文件、网络连接等)的情况下,关于系统资源的回收,Python的垃圾回收机制便派不上用场了,需要我们为对象定制该方法,用来在对象被删除时自动触发回收系统资源的操作
class People:
def __init__(self, name, age):
self.name = name
self.age = age
self.x = open('a.txt',mode='w') #self.x = 占据的是操作系统资源
def __del__(self): #发起系统调用,告诉操作系统回收相关的系统资源
print('run...')
self.x.close()
obj = People('辣白菜同学', 18)
del obj # obj.__del__()
print('============>')

浙公网安备 33010602011771号