内置函数
一 内置函数
什么是内置函数? 就是 python 提供好的,直接拿来用的 函数,比如 print,input等等,截止到python版本
3.6.2 python一共 提供了 68个内置函数,他们就是 python 直接提供给我们的.
abs() | dict() | help() | min() | setattr() |
all() | dir() | hex() | next() | slice() |
any() | divmod() | id() | objiect() | 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() | prorerty() | type() |
chr() | frozenset() | list() | range() | vars() |
classmethod() | getattr() | locals() | repr() | zip() |
compile() | globals() | map() | reversed() | __import__() |
complex() | hasattr() | max() | round() | |
delattr() | hash() | memoryview() | set() |
1.作用域相关:
locals() 返回当前作用域 中的 名字
globals() 返回全局作用域 中的 名字
2.迭代器相关
range() 生成数据
next() 迭代器向下执行一次,内部实际使用了__next__() 方法,返回迭代器的下一个项目
iter() 获取迭代器,内部实际使用的是 __iter__() 方法来 获取 迭代器
3.字符串类型代码的执行
eval() 执行字符串 类型的代码 并 返回 最终结果
1 print(eval("2 + 2")) # 4 2 3 n = 8 4 print(eval("2 + n")) # 10 5 6 def func(): 7 print(999) 8 eval("func()") # 999
exec() 执行 字符串 类型的 代码
exec(""" for i in range(10): print(i) # 0 1 2 3 4 5 6 7 8 9 """)
compile() 将字符串 类型的 代码变异,代码对象内购 通过 exec 语句来执行 或者eval() 进行求值
code1 = "for i in range(10):print(i)" c1 = compile(code1,"",mode="exec") exec(c1) # 0 1 2 3 4 5 6 7 8 9 code2 = "1+2+3" c2 = compile(code2,"",mode="eval") a = eval(c2) print(a) # 6 code3 = "name = input('请输入你的名字:')" c3 = compile(code3,"",mode="single") exec(c3) print(name) # 请输入你的名字:
有返回值的字符串形式的代码 用 eval() , 没有返回值的 字符串形式 的代码 用 exec(), 一般 很少用到 compile()
4.输入 和 输出 相关:
input() 获取用户输入的内容
print() 打印输出
5.内存相关:
hash() 获取到对象的 hash 值(int,str,bool,tuple) 可hash 的 就是不可迭代的对象
id() 获取到 对象的 内存地址
6.文件操作相关 的
open() 用于打开一个文件,创建一个文件句柄
7.模块相关
__import__() 用于动态加载类和函数
8.帮助:
help() 函数用于 查看 函数 或 模块 用途的 详细 说明
9.调用相关
callable() 用于检查一个对象是否是 可调用的 ,如果返回 True , objiect 有可能调用失败,但是如果
返回 False,那调用绝对 不会成功
10 查看内置属性
dir() 查看对象的 内置属性,方法,访问 的是对象 的 __dir__() 方法
11. 基础数据类型 相关
1. 数字相关:
bool() 将给定的数据转换成 bool 值,如果 不给值,返回 False
int() 将给定的数类型 转换成 int 值,如不给值,返回 0
float() 将给定的数据 转换成 float值,也就是小数
complex() 创建 一个 复数,第一个参数为 实部,第二个参数为虚部,或者第一个参数直接用
字符串来 描述 复数
2.进制转换
bin() 将给的参数 转换成 二进制
otc() 将给的参数转换成 八进制
hex() 将给的参数 转换成 十六 进制
3.数学运算
abs() 返回绝对值
divmode() 返回商 和 余数
round() 四舍五入
round(3.123,2) 表示 保留2 位小数
pow(a,b) 求 a 的 b 次幂,如果 有 三个参数 , 则求完 次幂 对第三个数 取余
print(pow(2,3,4)) # 0
sum() 求和
min() 求最小值
max() 求最大值
4.和数据结构 相关:
1.列表 和 元组:
list() 将一个 可迭代对象 转换成 列表
tuple() 将一个 可迭代对象 转换成 元组
reversed() 将一个 序列 翻转 ,返回 翻转 序列的迭代器
slice() 列表的 切片
s = "大家好,我叫哈哈哥" s1 = slice(1,5,2) print(s[s1]) # 家,
5. 字符串 相关
str() 将数据 转换成 字符串
format() 与数据类型 相关,用于 各种 技术,精算 等
# 字符串 print(format("test","<20")) # 左对齐 20的长度 print(format("test",">20")) # 右对齐 20的长度 print(format("test","^20")) # 居中 # 数值 print(format(3,"b")) # 二进制 11 print(format(97,"c")) # 转换成 unicode 字符 a print(format(11,'d')) # 十进制 11 print(format(11)) # 十进制 11 print(format(11,"o")) # 八进制 13 print(format(11,"x")) # 十六进制 小写字母 b print(format(11,"X")) # 十六进制 大写字母 B print(format(11,"n")) # 十进制 11 浮点数 print(format(123456789,"e")) # 科学技术法,默认保留 6位小数 1.234568e+08 print(format(123456789,"0.2e")) # 科学技术法,保留 2位小数(小写) 1.23e+08 print(format(123456789,"0.2E")) # 科学技术法,保留 2位小数(大写) 1.23E+08 print(format(1.23456789,"f")) # 小数点计数法,保留6 位小数 1.234568 print(format(1.23456789,"0.2f")) # 小数点计数法,保留 2 位小数 1.23 print(format(1.23456789,"0.10f")) # 小数点计数法,保留 10 位小数 1.2345678900 print(format(1.23456789e+10000,"F")) # 小数点计数法 INF
bytes() 把子符串 转换成 bytes 类型
s = "你好" bs = s.encode("utf-8") # b'\xe4\xbd\xa0\xe5\xa5\xbd' print(bs) s1 = bs.decode("utf-8") # 你好 print(s1) bs = bytes(s,encoding = "utf-8") # 把字符串 编码成 utf-8 print(bs) # b'\xe4\xbd\xa0\xe5\xa5\xbd'
bytearray() 返回一个新字节组数,这个数字里的 元素是 可变 的,并且 每个元素的值的范围是[0,256)
ret = bytearray("alex",encoding = "utf-8") print(ret[0]) # 97 print(ret) # bytearray(b'alex')
memoryview() 查看 bytes 在内存中的情况
# 查看 bytes 字节在 内存中的 情况 s = memoryview("张曼玉".encode("utf-8")) print(s) # <memory at 0x0184C8B8>
ord() 输入字节找带字符编码 的位置
chr() 输入位置数字找出 对应的 字符
ascii() 是 ascii码 中的 返回值 不是就返回 \u
# 找到对应字符的编码位置 print(ord("a")) # 97 print(ord("中")) # 20013 # 找到 对应编码 位置的 字符 print(chr(97)) # a print(chr(20013)) # 中 # 在 ascii 中 就返回这个值,不在就返回 \u print(ascii("a")) # 'a' print(ascii("中")) # '\u4e2d'
repr() 返回 一个对象的 string 形式
# repr 就是 原封不动的 输出,引号 和 转义符 都不起作用 print(repr("大家好,\n \t 我叫哈哈哥")) # '大家好,\n \t 我叫哈哈哥' print("我叫哈哈哥") # 我叫哈哈哥 # %r 原封不动的写出来 name = "嘻嘻姐" print("我叫%r" % name) # 我叫'嘻嘻姐'
数据集合:
dict() 创建一个字典
set() 创建一个集合
frozenset() 创建一个 冻结的 集合,冻结的 集合不能 进行删除 和 添加的 操作
len() 返回一个 对象中 元素的个数
sorted() 对可迭代 对象 进行 排序操作
enumerate() 获取集合的 枚举对象
lst = ["张曼玉","朱茵","邱淑贞","李若彤"] for index ,el in enumerate(lst): print(str(index) + "==>" + el) # 0==>张曼玉 # 1==>朱茵 # 2==>邱淑贞 # 3==>李若彤
all() 可迭代对象中 全部是 True, 结果才是 True 相当于 and
any() 可迭代对象中 有一个是 True,结果才是 True 相当于 or
print(all([1,2,True,0])) # False print(any([1,"",0])) # True
zip() 函数用于 将 可迭代 对象 作为参数,将对象中对应 的元素打包成一个个 元祖,然后返回
由这些 元素组成的列表,如果各个迭代器的元素个数 不一致,则返回列表长度与 最短的
对象 相同
l1 = [1,2,3,] l2 = ["a","b","c",5] l3 = ["*","**",(1,2,3)] for i in zip(l1,l2,l3): print(type(i),i) # <class 'tuple'> (1, 'a', '*') # <class 'tuple'> (2, 'b', '**') # <class 'tuple'> (3, 'c', (1, 2, 3))
ret = zip(l1,l2,l3)
print(ret.__next__())
print(ret.__next__())
print(ret.__next__())
# (1, 'a', '*')
# (2, 'b', '**')
# (3, 'c', (1, 2, 3))
filter() 过滤 函数
语法:
filter(function,iterable)
map() 会 根据 提供的函数 对 指定序列 做 映射 (lambda)