zip函数 all,any应用 闭包函数(重点) __all__、__name__的应用

# zip函数  any, all (并不是标准的高阶函数)
a = [1, 2, 3]
b = [3, 4, 5]
#matric
c = [a, b]

#矩阵转置
z = zip(a, b)
print(z) #返回zip对象

lst = list(z) #list转换显示内容
print(lst)

#zip函数,可以实现将可迭代对象作为参数,将对象中对应得元素打包成一个元组(元组的个数以最短的可迭代对象的长度为准),然后返回由这些元组组成的对象,可以用list转换显示内容

#any,all
if ave >90 and wuli >90 and huaxue >85 and shengwu >85:
    print('A')
#判断参数当中所有条件都成立,all函数返回真,否则返回假
if all(ave >90,wuli >90,huaxue >85,shengwu >85):
    print('A')

a = list(True,False,True)
if all(a):
    print('A')

#any 当判断的参数中至少有一个条件成立时,any就可以返回真,否则返回假
if any(ave >90,wuli >90,huaxue >85,shengwu >85):
    print('B')


#闭包函数:1,存在函数嵌套 2,外部函数必须返回内部嵌套函数的  函数对象 3,内部函数使用了外部函数的局部变量
def foo(): #函数嵌套
    print('hellofoo')
    s = 'world'
    def bar(s):
        print('hello,bar',s)
    #return bar(s) #函数调用
    return bar #返回函数对象  闭包方式

foo()

def outter(a):
    b = 10
    def inner():
        print(a+b)
    return inner

c = outter(5) #c 是函数对象
print(c)
c()
# 闭包函数的使用实列】
# 1
def user(name):
    def do(action):
        print(name,action)
    return do
jac = user('jack') #返回函数对象
jac('eat icecream') #函数调用
# 2
import matplotlib.pyplot as plt
import numpy as np

def line_conf(a,b):
    def line(x):
        return a*x +b

    return line
line1 = line_conf(1,1)
line2 = line_conf(3,2)

y1 = line1(1) #这个是给line(x)中x传参
y2 = line2(1)

x = np.array(range(0,31))
y1 = np.array([line1(i) for i in range(0,31)])
y2 = np.array([line2(i) for i in range(0,31)])
print(y1)
print(y2)

plt.scatter(x,y1)#图形显示
plt.scatter(x,y2)
plt.show()

# __all__ 定里面义py文件那些模块可以应用
# b.py
# __all__ = [''] #__all__为空 a.py里面调用不了b.py里面的模块  
__all__ = ['fun_in'] #填入模块名就是a.py只可以直接调用里面的模块  
def fun_in (a,b):
    print(a+b)
#a.py
from b import *
fun_in(3,4)

#__name__
def fun_in_b(a,b):
    print(a+b)
if __name__ == '__main__':
    fun_in(a,b)

你可能感兴趣的:(zip函数 all,any应用 闭包函数(重点) __all__、__name__的应用)