内置函数

一、定义

  python自动调用的,本来就有的函数。

  不依赖某个函数,即使用前不需要加.

二、举例

  1.dir

#dir 查看一个变量包含的所有方法名
print(dir(int))

m=[1,2,3,4]
print('__next__' in dir(m))
g=iter(m)
print('__next__' in dir(g))

  2.collable

#callable检测是否是个函数
a=1
print(callable(a))    #false
print(callable(globals))   #true

  3.help

#help返回所有的方法名字以及用法
help(str)

  4.id和hash

#内存相关
#id 内存地址
#hash 返回hash值
#列表属于不可哈希的类型
print(hash(1))      #不变,1
print(hash('111'))   #会变
print(hash((1,2,3,4)))    #不变,大数
#在一个程序执行中,可哈希的类型返回的哈希值不会变。但是再执行一次就会变。
#字典中key进行hash算法,得到一个数值即内存地址,存入value。所有key不可重复,而且必须可哈希

  5.input、print与end,sep

#input每次执行就会必须输入值,得到回车然后结束。可以传入参数作为提示
#print。end指定如何换行,默认\n。
#sep指定多个值之间的分隔符,默认空格。file指定文件,如果指定就是将打印的东西写到文件中
print('abcde',end='') print('abcde',end='') print('abcde',end='') print('') print(1,2,3,sep='|')

  6.exec、eval与compile

#eval,exec,compile
exec('print(1,2,3)')
eval('print(1,2,3)')
print(exec('1+2+3'))   #none  没有返回值,适合简单的流程控制
print(eval('1+2+3'))   #6,用在明确知道代码是什么,并且比较安全的情况下,一般不用
#exec,eval都可以执行字符串类型的代码,但是exec没有返回值

#关于exec
code='''
for i in range(1,5):
    print('this is %s'%i)
'''
exec(code)

#compile 将需要执行的代码翻译成字节码以执行,一次编译,可以多次执行
#exec,流程类
c=compile(code,'','exec')  #参数source,file
exec (c)
#eval,计算类
code2='1+2 +3'  #无视空格
c2=compile(code2,'','eval')  #参数source,file
print(eval (c2)) #返回6
#single,交互类
code3='r=input("please input r:")'
compile_3=compile(code3,'','single')
#print(r)
exec(compile_3)
print(r)    #虽然报错但其实此时执行到这里就可以用r了,上一步exec执行之前不可以用

  7.几个简单内置函数

#复数不能比较大小,5+2j(python用j,一般用i)
#浮点数:无限循环小数,有限循环小数,因为科学技术法的小数点可以浮动
#当小数点后特别长,会出现误差,而不是一般的四舍五入。因为计算机用的二进制转化
#bin 二进制  oct 八进制  hex 十六进制
#abs 返回绝对值       print(abs(-3))
#divmod 除法  接收两个参数而返回值是商和余数    print(divmod(9,5))
#round 做小数的精确, print(round(3.1415,2))   返回3.14
#pow 求幂  print(pow(5,3,2))   5的3次方对2取余,两个参数就直接算幂pow(5,3)
#sum 求和 最多两个参数,可迭代的里面是数也可以print(sum([1,2,3,4,5],4))
#   start=4,其实也是加,但是不可以按关键字传参,只能按位置传参
#min 求最小值  传参可以是可迭代的,也可以是不定长传参  print(min([1,2,5,4]))
#   print(min(1,2,5,-4,key=abs))   计算按方法得到的结果再找最小值
#max 求最大值

#reversed和reverse区别 都是反转,reverse用后原先的已经变了,产生一个新的数据,reversed会保留原数据,产生一个新的迭代器
#sort与sorted区别,都是排序。但sort会改变原来的数据,而sorted重新创建一个数据,比较占内存。
#sli=slice(1,5,2) print(l[sli]) 切片,类似一种语法糖 #format 格式化输出,进制转换,计算,小数点精确,调整格式,左对齐等 # 左对齐 print(format('test','<20')) #bytes转换进制,其实一般读到内存都是unicode,用encoding转换 # print(bytes('ccc',encoding='gbk')) unicode转换成gbk # print(bytes('ccc',encoding='gbk').decode('gbk')) #又变成ccc # 网络通讯中,只能传二进制 , # 照片和视频也基本用二进制存储, # html爬取到的也是编码, #bytearray byte是个整体,将其作为列表进行操作,print(b_array[0])返回二进制的第一个的十进制数 # 修改时可以节省内存,但只能通过字符编码来修改 #memeryview 转换成utf-8的bytes可以进行切片,得到字节类型的切片,不占内存,但看到的只是字节,如果转换成字符串又占空间了

#ord 转换成ascii码,如果是中文得到一个很大的数 #ascii 转换成ascii码,如果是中文得到一个类似二进制编码 #chr ascii转换成字符

#
repr print(repr('1'))返回有引号 print(repr(1))返回无引号 print('dcs is %r' %cccc) 原封不动的输出 #大括号括起来的都是无序的 #frozenset令集合不可变可以成为字典的key #len长度 #enumerate 计数
#all()接收一个可迭代的值,看是否所有值都不为空 #any()接收一个可迭代的,看是否有某一个值是空,返回true



*很重要的几个内置函数 #zip(几个可迭代的),得到一个zip object,这是可以迭代的。左右两边拉成对应的,如果长度不一样就后面的值不再出现。无序地拉 # 字典只能拉key #filter() 循环可迭代地类型。ret=filter(panduan_1,[1,2,3,4]),可以,将后面的可迭代的值全放入第一个的函数进行判断,筛选适合的值 # 传递函数名不加括号,函数可以非常复杂
#map 使每个值执行一遍第一个参数代表的函数

 

posted @ 2019-08-02 17:55  玉石非玉  阅读(157)  评论(0编辑  收藏  举报