# # 内置函数
# enumerate() # 枚举 将下标与元素一一对应
# eval() # 转换表达示,可以直接将数据进行计算,也可以进行加密
# filter() # 过滤,筛选不要的数,例如我有很多数据,我要过滤不要的数据,就用此函数
'''
def func(x):
return x >=5
li = [1,2,8,7,58,56,59]
a = tuple(filter(func,li))
print(a) # (8, 7, 58, 56, 59)
'''
# map() # 方式和上面一个差不多,作用不同
# zip() # 配对
'''
l1 = [1,3,5,7,9,6]
l2 = [3,5,7,8,9,5,4,3]
'''
# name = 'qingjiu'
# def tongyao():
# name = 'laowang' # 在函数里面定义的变量,影响不到函数外面的变量
# print(name) # name 变量名只能在定义的函数里面去使用
# tongyao()
# print(name)
# # 作用域,变量必须在前面,后面才是函数
# name1 = 'qingjiu'
# def tongyao():
# name = 'laowang' # 在函数外面的变量,叫全局变量,在函数里面的变量叫局部变量
# print(name1) #qingjiu 全局外面的变量能用在函数里面
# tongyao()
'''
在系统里面的变量不能使用时,必须用global声明后,并且要在变量的下一层缩进才能使用x = 123
def func():
global x
x += 1 # x 是系统带的不能直接使用,必须加上global后,x的变量才能使用return x
a = func()
print(a) # 124
'''
# # 在函数里面的变量不能使用时,必须用nonlocal声明后,并且在变量的下一层缩进才能使用
# def func1():
# x = 123
# def func2():
# nonlocal x # 是函数里面带的变量不能直接使用,必须加上nonlocal后,变量才能使用
# x = x +1
# print(x)
# func2()
# func1()
'''
lambda 参数:表达式'''
# def func(a):
# return a**2
# print(func(3)) # 9
''' 简化代码g = lambda a:a**2
print(g(3)) # 9
'''
# # 大于4的数
# li = [1,2,3,4,5,6,7,8,9]
# print(list(filter(lambda x:x>4,li))) # [5, 6, 7, 8, 9]
'''
筛选100以内2的倍数'''
# # 匿名函数 i=lambda a:a**2 print(i(4))就是将4传到a,结果等于16
# range(101)
# a = filter(lambda x:True if x%2==0 else False,range(101))
# print(list(a))
# # 闭包
# def func():
# def func1():
# return 'hello'
# return func1
# # 外层函数返回内层函数的引用,内层函数调用外层函数的变量
# print(func()())
'''
li = []
for i in range(5):
def func():
return i
li.append(func)
for f in li:
print(f()) # 结果是4行3
'''
# li = []
# for iin range(4):
# def func(i):
# def func1():
# return i
# return func1
# li.append(func(i))# 调用func这个函数的时候还保存i的值
# for fin li:
# print(f())# 结果是4行0到3