13. 前 方 高能-内置函数 一
一. 本节主要内容:
1. 内置函数
什什么是内置函数? 就是python给你提供的. 拿来直接 用的函数, 比如print., input等等. 截 止到python版本3.6.2 python 一共提供了了68个内置函数. 他们就是python直接提供给我们的. 有 一些我们已经 用过了了. 有 一些还没有 用过. 还有 一些需要学完了了 面向对象才能继续学习的. 今天我们就认识 一下python的内置函数.
abs() |
dict() |
help() |
min() |
setattr() |
||
all() |
dir() |
hex() |
next() |
slice() |
||
any() |
divmod() |
id() |
object() |
sorted() |
||
ascii() |
enumerate() |
input() |
oct() |
staticmethod( |
||
bin() |
eval() |
int() |
open() |
str() |
||
bool() |
exec() |
isinstance() |
ord() |
sum() |
||
bytearray() |
filter() |
issubclass() |
pow() |
super() |
||
bytes() |
float() |
iter() |
print() |
tuple() |
||
callable() |
format() |
len() |
property() |
type() |
||
chr() |
frozenset() |
list() |
range() |
vars() |
||
classmethod() |
getattr() |
locals() |
repr() |
zip() |
||
compile() |
globals() |
map() |
reversed() |
__import__() |
||
complex() |
hasattr() |
max() |
round() |
|||
delattr() |
hash() |
memoryview() |
set() |
|||
作 用域相关: |
||||||
locals() |
返回当前作 用域中的名字 |
globals() 返回全局作
用域中的名字
迭代器相关: range() 生成数据
next() 迭代器向下执 行行 一次, 内部实际使 用了了__next__() 方法返回迭代器的下 一个项 目
iter() 获取迭代器, 内部实际使 用的是__iter__()
方法来获取迭代器
字符串串类型代码的执
行行
eval() 执
行行字符串串类型的代码. 并返回最终结果
print(eval("2+2")) # 4
n = 8
print(eval("2+n")) # 10
def func(): print(666)
eval("func()") # 666
exec() 执
行行字符串串类型的代码
exec("""
for i in range(10): print(i)
""")
exec("""
def func():
print("我是周杰伦")
func()
""")
compile() 将字符串串类型的代码变异. 代码对象能够通过exec语句句来执 行行或者eval()进 行行求
值
‘‘‘
参数说明:
- 1.
resource 要执 行行的代码, 动态代码 片段
- 2.
文件名, 代码存放的 文件名, 当传 入了了第 一个参数的时候, 这个参数给空就可以了了
- 3.
模式, 取值有3个,
- 1.
exec: 一般放 一些流程语句句的时候
- 2.
eval: resource只存放 一个求值表达式.
- 3.
single: resource存放的代码有交互的时候. mode应为single
‘‘‘
code1 = "for
i in range(10): print(i)" c1 = compile(code1, "", mode="exec") exec(c1)
code2 = "1+2+3"
c2 = compile(code2, "", mode="eval") a
= eval(c2)
print(a)
code3 = "name =
input(‘请输 入你的名字:‘)" c3
= compile(code3, "", mode="single") exec(c3)
print(name)
有返回值的字符串串形式的代码
用eval(). 没有返回值的字符串串形式的代码
用exec(). 一般很少 用到compile()
输入和输出相关: input() 获取 用户输入的内容 print() 打印输出
内存相关:
hash() 获取到对象的哈希值(int, str, bool, tuple) id() 获取到对象的内存地址
文件操作相关: open() 用于 口打开
一个 文件, 创建
一个 文件句句柄
模块相关:
__import__()
用于动态加载类和函数
帮助:
help() 函数 用于查看函数或模块 用途的详细说明调
用相关:
callable() 用于检查
一个对象是否是可调 用的. 如果返回True, object有可能调 用失败, 但如果返回False. 那调 用绝对不会成功查看内置属性:
dir() 查看对象的内置属性, 方法. 访问的是对象中的__dir__()
方法基础数据类型相关:
数字相关: bool() 将给定的数据转换成bool值. 如果不给值. 返回False
int() 将给定的数据转换成int值. 如果不给值, 返回0 float() 将给定的数据转换成float值. 也就是 小数
complex() 创建 一个复数. 第 一个参数为实部, 第 二个参数为虚部. 或者第 一个参数直接 用字符串串来描述复数
进制转换: bin() 将给的参数转换成 二进制
otc() 将给的参数转换成八进制 hex() 将给的参数转换成 十六进制
数学运算: abs() 返回绝对值
divmode() 返回商和余数 round() 四舍五入
pow(a, b) 求a的b次幂, 如果有三个参数. 则求完次幂后对第三个数取余 sum() 求和 min() 求最 小值 max() 求最 大值
和数据结构相关:列列表和元组:
list() 将
一个可迭代对象转换成列列表 tuple() 将
一个可迭代对象转换成元组
reversed() 将
一个序列列翻转, 返回翻转序列列的迭代器 slice() 列列表的切片
st
= " 大家好, 我是麻花藤" s = slice(1, 5, 2) print(st[s])
字符串串相关: |
||||
str() |
将数据转化成字符串串 |
|||
format() |
与具体数据相关, 用于计算各种 小数, 精算等 |
|||
# 字符串串 |
||||
print(format(‘test‘, ‘<20‘)) |
# 左对 齐 |
|||
print(format(‘test‘, ‘>20‘)) |
# 右对 齐 |
|||
print(format(‘test‘, ‘^20‘)) |
# 居中 |
|||
# 数值 |
||||
print(format(3, ‘b‘)) |
# 二进制 |
|||
print(format(97, ‘c‘)) |
# 转换成unicode字符 |
|||
print(format(11, ‘d‘)) |
# 十进制 |
|||
print(format(11, ‘o‘)) |
# 八进制 |
|||
print(format(11, ‘x‘)) |
# 十六进制( 小写字 母) |
|||
print(format(11, ‘X‘)) |
# 十六进制( 大写字 母) |
|||
print(format(11, ‘n‘)) |
# 和d 一样 |
|||
print(format(11)) # 和d 一样 |
||||
# 浮点数 |
||||
print(format(123456789, ‘e‘)) |
# 科学计数法. 默认保留留6位 小数 |
|||
print(format(123456789, ‘0.2e‘)) |
# 科学计数法. 保留留2位 小数( 小写) |
|||
print(format(123456789, ‘0.2E‘)) |
# 科学计数法. 保留留2位 小数( 大写) |
|||
print(format(1.23456789, ‘f‘)) |
# 小数点计数法. 保留留6位 小数 |
|||
print(format(1.23456789, ‘0.2f‘)) |
# 小数点计数法. 保留留2位 小数 |
|||
print(format(1.23456789, ‘0.10f‘)) |
# 小数点计数法. 保留留10位 小数 |
print(format(1.23456789e+10000, ‘F‘)) # 小数点计数法.
bytes() 把字符串串转化成bytes类型
s =
"你好" bs = s.encode("UTF-8") print(bs)
s1 = bs.decode("UTF-8") print(s1)
bs
= bytes(s, encoding="utf-8") # 把字符串串编码成UTF-8
print(bs)
bytearray() 返回
一个新字节数组. 这个数字
里里的元素是可变的, 并且每个元素的值得范
围是[0,256)
ret = bytearray(‘alex‘,encoding=‘utf-8‘) print(ret[0])
print(ret)
memoryview() 查看bytes在内存中的情况
# 查看bytes字节在内存中的情况
s =
memoryview("麻花藤".encode("utf-8")) print(s)
ord() 输入字符找带字符编码的位置 chr() 输入位置数字找出对应的字符
ascii() 是ascii码中的返回该值 不是就返回\u...
# 找到对应字符的编码位置
print(ord(‘a‘)) print(ord(‘中‘))
# 找到对应编码位置的字符 print(chr(97)) print(chr(20013))
# 在ascii中就返回这个值.
如果不不在就返回\u...
print(ascii(‘a‘))
print(ascii(‘好‘))
repr() 返回
一个对象的string形式
# repr 就是原封不不动的输出, 引号和转义字符都不不起作
用print(repr(‘ 大家好,\n \t我叫周杰伦‘)) print(‘ 大家好我叫周杰伦‘)
# %r
原封不不动的写出来
name
= ‘taibai‘ print(‘我叫%r‘ % name)
数据集合: dict() 创建 一个字典
set() 创建
一个集合
frozenset() 创建 一个冻结的集合. 冻结的集合不能进 行行添加和删除操作其他相关:
len() 返回
一个对象中的元素的个数 sorted() 对可迭代对象进
行行排序操作(讲完lamda后再讲这个) enumerate() 获取集合的枚举对象
lst = ["alex", "wusir", "taibai"] for
index, el in enumerate(lst): print(str(index)+"==>"+el)
all() 可迭代对象中全部是True, 结果才是True any() 可迭代对象中有 一个是True, 结果就是True
print(all([1,2,True,0]))
print(any([1,‘‘,0]))
zip() 函数 用于将可迭代的对象作为参数, 将对象中对应的元素打包成 一个个元组, 然后返回由这些元组组成的开了了表. 如果各个迭代器的元素个数不 一致, 则返回列列表 长度与最短的对象相同.
l1 = [1,2,3,]
l2 = [‘a‘,‘b‘,‘c‘,5]
l3 = (‘*‘,‘**‘,(1,2,3)) for
i in zip(l1,l2,l3):
print(i)
filter() 过滤(讲完lamda) map() 会根据提供的函数对指定序列列做映射(lamda)
# def func():# a = 10# print(locals()) # 当前作用域中的内容# print(globals()) # 全局作用域中的内容# print("今天内容很简单")# func() # for i in range(20,15,-3):# print(i) # lst = ["大阳哥", "喜欢", "私密的徒步"]# it = iter(lst) # __iter__()# print(it.__next__())# print(next(it)) # __next__()# print(next(it))# print(next(it)) # print("李嘉诚", "黄花菜", "马云", sep="*", end="大阳哥") # seperator# input("提示语") # hash算法: # 目的是唯一性 # dict 查找效率非常高, hash表.用空间换的时间 比较耗费内存 # s = "大阳哥"# print(hash(s))# a = 12# print(hash(a)) # lst = [1,2,3,4,5,6,7]# # print(hash(lst)) # 列表是不可哈希的# print(hash((1,)))# print(hash("呵呵"))# print(hash("哈哈")) # 让用户输入一个要导入的模块# import os# name = input("请输入你要导入的模块:")# __import__(name) # 可以动态导入模块 # print(help(str)) # print(dir(str)) # a = 11.25# print(type(a)) # bin() 把一个十进制的数, 转换成二进制# print(bin(10)) # 二进制# print(hex(10)) # 十六进制# print(oct(10)) # 八进制 # a = 10# print(callable(a))## def func():# print("马化腾")# print(callable(func)) # 函数是可以被调用的 # s = input("请输入a+b:")# print(eval(s)) # 可以动态的执行代码. 代码必须有返回值 # s = "25*4"# a = eval(s) # 运算# print(a) # s = "for i in range(10): print(i)"# a = exec(s) # exec 执行代码不返回任何内容# print(a) # 动态执行代码# exec("""# def func():# print(" 我是周杰伦")# """ )# func() # code1 = "for i in range(10): print(i)"# com = compile(code1, "", mode="exec") # compile并不会执行你的代码.只是编译# exec(com) # 执行编译的结果## code2 = "5+6+7"# com2 = compile(code2, "", mode="eval")# print(eval(com2))## code3 = "name = input(‘请输入大阳哥的名字:‘)"# com3 = compile(code3, "", mode="single")# exec(com3)# print(name) # print(abs(-2)) # 绝对值# print(abs(2)) # print(divmod(20,3)) # 求商和余数 # print(round(4.50)) # 五舍六入 => 四舍五入 # print(pow(10,2,3)) # 如果给了第三个参数. 表示最后取余 # print(sum([1,2,3,4,5,6,7,8,9,10])) # 求和 # lst = "你好啊"# it = reversed(lst) # 不会改变原列表. 返回一个迭代器, 设计上的一个规则# print(list(it)) # lst = [1, 2, 3, 4, 5, 6, 7]# print(lst[1:3:1])## s = slice(1, 3, 1) # 切片用的# print(lst[s]) # name = "你好. \n我叫%s周润发" % "李嘉诚"# print(name)# print(repr(name)) # 原样输出,过滤掉转义字符 \n \t \r 不管百分号 # print(ord(‘a‘)) # 97, 返回字母a在编码表中的码位# print(ord(‘中‘)) # 20013 中国的中字在编码表中的位置 # print(chr(65)) # 已知码位. 计算字符# print(chr(20018))## for i in range(65536):# print(chr(i), end=" ") # print(ascii("房")) # s = "李嘉诚的爸爸"# a = s.encode("UTF-8")# print(a)# print(a.decode("GBK")) # bs = bytes("大阳哥今天很厉害", encoding="utf-8")# print(bs.decode("utf-8")) # ret = bytearray("alex" ,encoding =‘utf-8‘)# print(ret[0])# ret[0] = 65# print(str(ret)) # s = memoryview("麻花藤".encode( "utf-8")) # 查看内存# print(s)
# s = "我叫王尼玛"# print(format(s, "^20"))# print(format(s, "<20"))# print(format(s, ">20")) # print(format(3, ‘b‘ )) # ?进制# print(format(97, ‘c‘ )) # 转换成unicode字符# print(format(11, ‘d‘ )) # ?进制 %d# print(format(11, ‘o‘ )) # ?进制 8# print(format(11, ‘x‘ )) # ?六进制(?写字?)# print(format(11, ‘X‘ )) # ?六进制(?写字?)# print(format(11, ‘n‘ )) # 和d?样# print(format(11)) # 和d?样 # print(format(123456789, ‘e‘ )) # 科学计数法. 默认保留6位小数# print(format(123456789, ‘0.2e‘ )) # 科学计数法. 保留2位小数(小写)# print(format(123456789, ‘0.2E‘ )) # 科学计数法. 保留2位小数(大写)# print(format(1.23456789, ‘f‘ )) # 小数点计数法. 保留6位小数# print(format(1.23456789, ‘0.2f‘ )) # 小数点计数法. 保留2位小数# print(format(1.23456789, ‘0.10f‘)) # 小数点计数法. 保留10位小数# print(format(1.23456789e+3, ‘F‘)) # 小数点计数法. 很大的时候输出 INF # lst = ["蛋1", "蛋2", "蛋3", "蛋4"]# for i in range(len(lst)):# print(i)# print(lst[i]) # for index, el in enumerate(lst, 100): # 把索引和元素一起获取,索引默认从0开始. 可以更改# print(index)# print(el) # print(any([0, "哈哈", "馒头", True])) lst1 = ["施瓦辛格", "泰达米尔", "阿米尔汗", "威震天"]lst2 = ["终结者", "英雄联盟", "我的个神啊", "变形金刚"]lst3 = [10000000, 3, 10, 55,66]for el in zip(lst1, lst2, lst3): print(el)
参考资料料:
https://www.processon.com/mindmap/5de20a11e4b074c442eefe1d
原文地址:https://www.cnblogs.com/Selbst/p/11968379.html