print()
input()
len()
type()
open()
tuple()
list()
int()
bool()
set()
dir() #可以查看变量拥有的方法。
id()
str()
callable() #查看是否可以调用。如果是变量,返回False
print(locals()) #返回本地作用域中的所有名字
print(globals()) #返回全局作用域中的所有名字
global 变量
nonlocal 变量
exec('print(123)') #没有有返回值
eval('print(123)') #有返回值,最好不要用,只能用在明确知道要执行的代码是什么。
print(eval('1+2+3+4'))
print(exec('1+2+3+4'))
输出:
exec和eval都可以执行 字符串类型的代码
eval有返回值 —— 有结果的简单计算
exec没有返回值 —— 简单流程控制
eval只能用在你明确知道你要执行的代码是什么
code1 = 'for i in range(0,10): print (i)'
compile1 = compile(code1,'','exec') #compile对字符串进行处理
exec(compile1)
code2 = '1 + 2 + 3 + 4'
compile2 = compile(code2,'','eval')
print(eval(compile2))
code3 = 'name = input("please input your name:")'
compile3 = compile(code3,'','single') #有交互的时候,后面的属性,要写single
exec(compile3) #执行时显示交互命令,提示输入
print(name)
进制转换
print(bin(10)) #二进制
print(oct(10)) #八进制
print(hex(10)) #十六进制
数学运算
print(abs(-5)) #绝对值
divmod(7,3) #div 除法 mod取余 除余方法
divmod(9,5)
round(3.1415926,2) #小数点精确
pow(3,2) #求幂运算
pow(2,3,3) #2的3次方除以3取余
pow(3,2,1) #3的2次方除以1取余
sum(iterable,start) #iterable必须可迭代,且是数字,start表示从几开始加。
print(min(1,2,3,-4))
print(min(1,2,3,-4,key = abs)) #把可迭代的元素全部按绝对值计算最小值,输出1
print(max(1,2,3,-4,key = abs)) ##把可迭代的元素全部按绝对值计算最小值,输出-4
数据结构
dict
list
tuple
set
str
数据类型
int
bool
l = [1, 2, 3, 4, 5]
l.reverse()
print(l)
输出:
l1 = [1,2,3,4,5]
l1.reversed() #保留源列表,返回一个反向的迭代器
print(l1)
输出:
bytes 转换成bytes类型
# 我拿到的是gbk编码的,我想转成utf-8编码
print(bytes('你好',encoding='GBK')) # unicode转换成GBK的bytes
print(bytes('你好',encoding='utf-8')) # unicode转换成utf-8的bytes
输出:
网络编程 只能传二进制,照片和视频也是以二进制存储,html网页爬取到的也是编码
b_array = bytearray('你好',encoding='utf-8')
print(b_array)
print(b_array[0])
# '\xe4\xbd\xa0\xe5\xa5\xbd'
s1 = 'alexa'
s2 = 'alexb'
输出:
下面的函数是必须要掌握的,特点是什么。
zip()
l = [1,2,3,4,5]
l2 = ['a','b','c','d']
l3 = ('*','**',[1,2])
d = {'k1':1,'k2':2}
for i in zip(l,l2,l3,d):
print(i)
输出:
filter 是一个过滤函数
def is_str(s):
return s and str(s).strip()
ret = filter(is_str, [1, 'hello','',' ',None,[], 6, 7, 'world', 12, 17])
print(ret) #返回迭代器,节省空间。
for i in ret:
print(i)
输出:
map
ret = map(abs,[1,-4,6,-8])
print(ret)
for i in ret:
print(i)
输出:
filter和map的区别
filter 执行了filter之后的结果集合 <= 执行之前的个数
filter只管筛选,不会改变原来的值
map 执行前后元素个数不变
值可能发生改变
l = [1,-4,6,5,-10]
# l.sort(key = abs) # 在原列表的基础上进行排序
# print(l)
print(sorted(l,key=abs,reverse=True)) # 生成了一个新列表 不改变原列表 占内存
print(l)
输出:
l = [' ',[1,2],'hello world']
new_l = sorted(l,key=len)
print(new_l)
输出: