def max(a,b): return a if a>b else b def the_max(x,y,z): c = max(x,y) #函数的嵌套调用 return c if c>z else z print(the_max(1,2,3)) ## 3
格式:html
变量 = 条件返回True的结果 if 条件 else 条件返回False的结果网络
条件:1,必需要有结果。2,必需要有if。3,只能是简单的结果数据结构
##嵌套多个函数也能够 def max1(x,y): m = x if x>y else y return m def max2(a,b,c,d): res1 = max1(a,b) res2 = max1(res1,c) res3 = max1(res2,d) return res3 max2(23,-7,31,11)
# 31
##inner闭包
##在函数嵌套定义时,内部函数能够使用外部函数的变量app
def outer(): a = 1#外部函数的变量 def inner(): print(a)#内部函数能够使用外部函数的变量 print("inner") inner() outer() #1 #inner
##三层嵌套:函数
def outer(): a = 1 def inner1(): b = 2 print(a) print("inner1") def inner2(): print(a,b) print("inner2") inner2() inner1() outer() ### 1 inner1 1 2 inner2
def f1(): a = 1 def f2(): nonlocal a a = 2 f2() print('a in f1 : ',a) f1() #a in f1 : 2
def f1(): a = 1 def f2(): #nonlocal a a = 2 f2() print('a in f1 : ',a) f1() #a in f1 : 1
第一类对象:(能够赋值、能够做为参数、能够做为返回值)url
一、函数名是能够赋值的spa
def func1(): print(123) func2 = func1 #函数名能够赋值 func2() L = [func1,func2] #函数名能够做为容器数据类型 print(L) for i in L: i() #### 123 [<function func1 at 0x000001BB8BE42E18>, <function func1 at 0x000001BB8BE42E18>] 123 123
二、函数名是能够做为一个数据结构的元素(能够做为容器数据类型的元素)code
三、函数名是能够做为一个函数的参数htm
##函数名能够做为参数来传递 def f1(): print("aaa") def f2(f): f() f2(f1) ##aaa
四、函数名能够做为函数的返回值
def f1(): print("aaa") def f2(f): f() return f #函数名作为返回值给f3 f3 = f2(f1) f3() ### aaa aaa
#闭包:首先是嵌套函数,而且内部函数调用外部函数的变量 def outer(): a = 1 def inner(): print(a) print(inner.__closure__) outer() #(<cell at 0x000002567BB095B8: int object at 0x0000000055A06C10>,)
##闭包的标准用法:
def outer(): a = 1 def inner(): print(a) return inner inn = outer() inn() # 1
嵌套闭包:
def wrapper(): money = 1000 def func(): name = 'eva' def inner(): print(name,money) return inner return func f = wrapper() i = f() i()
##
eva 1000
##判断闭包函数的方法__closure__
#输出的__closure__有cell元素 :是闭包函数 def func(): name = 'eva' def inner(): print(name) print(inner.__closure__) return inner f = func() f()
#输出的__closure__为None :不是闭包函数 name = 'span' def func2(): def inner(): print(name) print(inner.__closure__) return inner f2 = func2() f2() ## None
##闭包函数获取网络应用
############### from urllib.request import urlopen def get_url(): url = "http://www.xiaohua100.cn/index.html" def get(): return urlopen(url).read() return get get_func = get_url() content = get_func() print(content)
##闭包的好处:在调用内部函数的时候不用重复的生成外部的变量。(节省时间)