# globals() 和 locals()
# name='xxx'
# def func():
# a=1
# print(globals()) # 全局的变量
# print(locals()) #局部的变量
# func()
#eval() 函数 用来执行一个字符串的表达式,并返回表达式的值
# eval() 函数功能:
# 1.将字符串当成有效的表达式来求值并返回计算结果
# 2.可以实现列表字符串,字典字符串,元组字符串转换成对应的列表,字典,元组 ‘[1,2]’
s='123'
ret=eval(s)
print(ret,type(ret))
# def func():
# print('666')
# return '厉害了'
#
# eval('func()') #666
# ret=eval('func')() #相当于 func()
# print(ret)
# lst='[1,2]'
# eval1=eval(lst)
# print(eval1,type(eval1))
#
# dic='{1:2}'
# eval1=eval(dic)
# print(eval1,type(eval1))
#
# tup='(1,2)'
# eval1=eval(tup)
# print(eval1,type(eval1))
# exec 和 eval差不多,只是没有返回值
# def func():
# print('666')
# return '厉害了'
#
# exec ('func()') #666
# callable() #检测名字是否可以被调用
# a=1
# print(callable(a))
#
# b='123'
# print(callable(b))
# def func():
# print('666')
# return '厉害了'
# print(callable(func)) #True
# dir() #查看一个数据可以调用哪些方法
# print(dir(123))
# print()函数
# print(1,end='&&&&&&&&&') # 设置以什么结尾,默认是换行
# print(2)
#
# print(1,2,3) #1 2 3
# print(1,2,3,sep=',') #1,2,3 #默认空格,可以设置,元素之间形式
# print写文件
with open('print.txt',mode='w',encoding='utf-8')as f:
print('同桌,get up',file=f)
print('同桌,复习', file=f)
print('同桌,上课', file=f)
# 数学类的
# abs() #绝对值
# ret=divmod(10,6) #除余函数 (1,4)
# print(ret)
# round() 保留任意位小数
# f=2.342514
# ret=round(f,3)
# print(ret)
# pow(2,3) #2**3 次幂
# sum()求和
# l=[1,2,3,4,5]
# ret1=sum(l)
# ret2=sum([i for i in l])
#
# dic={'apple':30,'pear':80}
# ret=sum({dic[k] for k in dic})
# print(ret)
#
#
# min(l)
# max(l)
lst=[1,2,3,4,5]
# lst.reverse()
# print(lst)
# reversed(seq) #seq 需要反转的序列,比如元组,列表,字符串等
# reversed(seq) 作用:返回一个反转的迭代器
# lst1=reversed(lst)
# print(lst1) #迭代器的内存地址 (3种方法取值)
# for i in lst1:
# print(i)
# filter(function,iterable) #过滤函数
# function:函数名
# iterable:可迭代对象
# 作用:过滤不符合条件的元素,返回符合条件的元素组成的新列表,并以迭代器形式返回
lst=[1,2,3,4,5]
# def func(n):
# if n%2==1:
# return True
# ret=filter(func,lst)
# print('ret',ret)
# for i in ret:
# print(i)
# ret=filter(lambda n:n%2==1,lst)
# for i in ret:
# print(i)
# map(function,iterable,...)
# 作用:把可迭代对象里的每个元素作为函数的参数进行计算和判断,函数的返回值被作为新的元素存储起来
#方法1
# def add(x):
# return x**2
#
# lst=range(11)
#
# ret=map(add,lst)
# print(ret)
# print(list(ret)) #迭代器的转列表取值方式 #[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
#方法2
# print(list(map(lambda x:x**2,range(11)))) #组合使用lambda 匿名函数
# enumerate #枚举函数
# 作用:给数据配上序号
# with open('print.txt',encoding='utf-8')as f:
# # for line in enumerate(f):
# # print(line) #元组的形式
# for num,message in enumerate(f,1): #拆包,指定从1开始
# print(num,message)
# zip() 拉链
# 作用:可以将多个序列(列表,元组,字典,集合,字符串以及range())压缩成一个zip对象
#其实就是将这些序列中对应位置的元素重新组合,返回一个新的元组
a=[1,2,3,4,]
b=['a','b','c','d']
c={'A','B','C','D'}
ret=zip(a,b,c)
print(ret)
for i in ret:
print(i)
# sorted(iterable,key,reverse) #排序
# iterable:可迭代对象
# key:用来指定排序的元素
# reverse:排序规则,默认升序
lst=[23,-77,44,55,1,2,0,-9]
print(sorted(lst)) #[-77, -9, 0, 1, 2, 23, 44, 55]
print(sorted(lst,reverse=True)) #降序
print(sorted(lst,key=abs)) #按绝对值升序
lst1=[{'age':20},{'age':15},{'age':28}]
print(sorted(lst1,key=lambda i:i['age']))