파이썬 (15) 폐쇄 기능

1. 기능 개체

에센스 : 사용하는 변수로서의 기능은, 용도는 네 개의 영역으로 분할 될 수있다

  • 1이 할당 될 수 있고, B에 할당 함수 이름, B가 직접 () 함수를 예시 할 수 있다는
f=func
print(f,func)
f()
  • 이 함수는 인수 다른 함수로 전달 될 수있다
def foo(x): # x = func的内存地址
    # print(x)
    x()

foo(func) # foo(func的内存地址)
  • 3 함수의 리턴 값의 함수일 수있다
def foo(x): # x=func的内存地址
    return x # return func的内存地址

res=foo(func) # foo(func的内存地址)
print(res) # res=func的内存地址
res()
  • (4) 컨테이너의 요소의 형태로 사용될 수있다
l=[func,]
# print(l)
l[0]()

dic={'k1':func}
print(dic)
dic['k1']()

데모 기능 개체 :

def login():
    print('登录功能')


def transfer():
    print('转账功能')


def check_banlance():
    print('查询余额')


def withdraw():
    print('提现')


def register():
    print('注册')


func_dic = {
    '0': ['退出', None],
    '1': ['登录', login],
    '2': ['转账', transfer],
    '3': ['查询余额', check_banlance],
    '4': ['提现', withdraw],
    '5': ['注册', register]
}
# func_dic['1']()


while True:
    for k in func_dic:
        print(k, func_dic[k][0])

    choice = input('请输入命令编号:').strip()
    if not choice.isdigit():
        print('必须输入编号,傻叉')
        continue

    if choice == '0':
        break

    # choice='1'
    if choice in func_dic:
        func_dic[choice][1]()
    else:
        print('输入的指令不存在')

2. 중첩 된 기능

  • 1, 중첩 된 함수 호출 : 다른 기능을 프로세스의 함수를 호출 및 통화
def max2(x,y):
    if x > y:
        return x
    else:
        return y


def max4(a,b,c,d):
    # 第一步:比较a,b得到res1
    res1=max2(a,b)
    # 第二步:比较res1,c得到res2
    res2=max2(res1,c)
    # 第三步:比较res2,d得到res3
    res3=max2(res2,d)
    return res3

res=max4(1,2,3,4)
print(res)
  • 2 중첩 함수 정의 : 함수 내의 다른 함수를 정의
def f1():
    def f2():
        pass
  • 추구 원형 경계 또는 지역을 찾는
def circle(radius,action=0):
    from math import pi

    def perimiter(radius):
        return 2*pi*radius

    # 求圆形的求面积:pi*(radius**2)
    def area(radius):
        return pi*(radius**2)

    if action == 0:
        return 2*pi*radius

    elif action == 1:
        return area(radius)

circle(33,action=0)

3. 폐쇄 기능

  • 1의 전제
    폐쇄 기능 및 범위 스페이스 = + + 함수 중첩 함수 오브젝트
    핵심 포인트 : 관계의 이름은 함수 정의 단계는 우선 발견하는
  • 폐쇄 기능은 무엇 2.
    "닫기"함수는 함수를 참조 인라인 기능입니다
    외부 층이 함수 영역의 이름이 포함 참조 "패키지"기능은 기능 (대신 글로벌 범위)을 의미
    개념 함수 객체에, 당신은 수있는 기반 함수는 아무데도 가지에 대한 호출을 반환하지만 관계는 관계없이 함수 호출의 위치 결정 된 완전한 기능의 정의의 범위에있다.
    그것은 항상 데이터 처리로 처리되는 함수 우선 범위 온다. 함수는 외부 영역 (글로벌없는 범위) 변수에 대한 참조를 포함 포함이면 '중첩 함수'기능 폐쇄 폐쇄 (폐쇄)이라고 불리는
    공간 및 범위 : 폐쇄 기능 중첩 함수 +의인가
def f1():
    x = 33333333333333333333
    def f2():
        print(x)
    f2()


x=11111
def bar():
    x=444444
    f1()

def foo():
    x=2222
    bar()

foo()
  • 폐쇄 기능 : 함수 객체
def f1():
    x = 33333333333333333333
    def f2():
        print('函数f2:',x)
    return f2

f=f1()
# print(f)

# x=4444
# f()
def foo():
    x=5555
    f()

foo()

4. 폐쇄

  • 상원은 계획을 통과 :
def get(url):
     response=requests.get(url)
     print(len(response.text))

 get('https://www.baidu.com')
 get('https://www.cnblogs.com/linhaifeng')
 get('https://zhuanlan.zhihu.com/p/109056932')
  • 옵션 2를 전달하는 매개 변수 :
def outter(url):
    # url='https://www.baidu.com'
    def get():
        response=requests.get(url)
        print(len(response.text))
    return get

추천

출처www.cnblogs.com/Franciszw/p/12550084.html