- 内置函数
什么是内置函数? 就是python给你提供的. 拿来直接用的函数, 比如print., input等等. 截⽌止 到python版本3.6.2 python一共提供了了68个内置函数. 他们就是python直接提供给我们的.
作用域相关:
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()进行求值,有交互用single模式。
'''
参数说明:
1. resource 要执⾏行行的代码, 动态代码⽚片段
2. ⽂文件名, 代码存放的⽂文件名, 当传⼊入了了第⼀一个参数的时候, 这个参数给空就可以了了
3. 模式, 取值有3个,
3.1. exec: ⼀一般放⼀一些流程语句句的时候
3.2. eval: resource只存放⼀一个求值表达式.
3.3. single: resource存放的代码有交互的时候. mode应为single
'''
s1 = "for i in range(10): print(i)"
cl = compile(s1"",mode="exec")
exec(c)
s2 = "1+2+3"
c2=compile(s2,"",model="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() 创建一个复数,第一个参数为实部,第二个参数为虚部,或者第⼀个参数直接 用字符串来描述复数。(函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。)进制转换:
bin() 将给的参数转换成二进制
otc() 将给的参数转换成八进制
hex() 将给的参数转换成十六进制数学运算:
abs() 返回绝对值
divmode() 返回商和余数
round() 四舍五入
pow(a,b) 求a的b次幂,如果有三个参数,则求完次幂后对第三个数取余。
sum() 求和
min() 求最小值
max() 求最大值数据结构相关
- 列表和元祖:
list() 将一个可迭代对象转换成列表
tuple() 将一个可迭代对象转换成元祖
reversed() 将一个序列反转,返回反转序列的迭代器
slice() 列表的切片,返回一个切片对象(class slice(start, stop[, step]) start -- 起始位置 stop -- 结束位置 step -- 间距)
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')) # 小数点计数法.
byte() 把字符串转化成byte类型
s = "你好"
bs=s.encode("UTF-8")
print(bs)
s1=bs.decode("UTF-8")
print(s1)
bs = bytes(s, encoding="utf-8")
print(bs)
结果:
b'\xe4\xbd\xa0\xe5\xa5\xbd'
你好
b'\xe4\xbd\xa0\xe5\xa5\xbd'
bytearray() 返回一个新字节数组,这个数字里的元素是可变的,并且每个元素的值的范围是[0,256]
ret = bytearray('alex',encoding='utf-8')
print(ret[0])
print(ret)
结果:
97
bytearray(b'alex')
memoryview()查看bytes在内存中的情况
# 查看bytes字节在内存中的情况
s = memoryview("麻花藤".encode("utf-8"))
print(s)
结果:
<memory at 0x10d88ef48>
ord() 输入字符找带字符编码的位置
chr() 输入位置数字找出对应的字符
ascii() 是ascii码中的返回该值 不是就返回\u...
# 找到对应字符的编码位置
print(ord('a'))
print(ord('中'))
# 找到对应编码位置的字符
print(chr(97))
print(chr(20013))
# 在ascii中就返回这个值. 如果不不在就返回\u...
print(ascii('a'))
print(ascii('好'))
结果:
97
20013
a
中
'a'
'\u597d'
数据集合:
dict() 创建一个字典
set() 创建一个集合
frozenset()创建一个冻结的集合,冻结的集合不能进行添加和删除操作。其他相关:
len() 返回⼀一个对象中的元素的个数
sorted() 对可迭代对象进⾏行行排序操作
enumerate() 获取集合的枚举对象
lst = ["alex", "wusir", "taibai"]
for index, el in enumerate(lst):
print(str(index)+"==>"+el)
结果:
0==>alex
1==>wusir
2==>taibai
all() 可迭代对象中全部是True, 结果才是True
any() 可迭代对象中有一个是True, 结果就是True
print(all([1,2,True,0]))
print(any([1,'',0]))
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的列表。
>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b) # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c) # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped) # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
def is_odd(n):
return n % 2 == 1
newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
for i in newlist:
print(i)
结果:
1
3
5
7
9
import math
# 过滤出1~100中平方根是整数的数:
def is_sqr(x):
return math.sqrt(x) % 1 == 0
newlist = filter(is_sqr, range(1, 101))
print(list(newlist))
结果:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
map() 会根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
def square(x) : # 计算平方数
return x ** 2
i = map(square, [1, 2, 3, 4, 5])
print(list(i))
iterator = map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函数
print(list(iterator))
# 提供了两个列表,对相同位置的列表数据进行相加
ret = map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
print(ret)
print(list(ret))
结果:
[1, 4, 9, 16, 25]
[1, 4, 9, 16, 25]
<map object at 0x108273630>
[3, 7, 11, 15, 19]
参考资料料: https://www.processon.com/view/link/5b4ee15be4b0edb750de96ac