1. objeto de función
Esencia: la función como una variable para su uso, uso específico puede dividirse en cuatro áreas
- 1, puede ser asignado, el nombre de la función asignada de A a B, B directamente () la función se puede citar que la
f=func
print(f,func)
f()
- 2, la función se puede hacer pasar como un argumento de otra función
def foo(x): # x = func的内存地址
# print(x)
x()
foo(func) # foo(func的内存地址)
- 3, el valor de retorno de la función puede ser una función de
def foo(x): # x=func的内存地址
return x # return func的内存地址
res=foo(func) # foo(func的内存地址)
print(res) # res=func的内存地址
res()
- 4, los elementos del recipiente pueden ser utilizados como un tipo de
l=[func,]
# print(l)
l[0]()
dic={'k1':func}
print(dic)
dic['k1']()
función de demostración objeto:
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. Funciones anidadas
- 1, las llamadas a funciones anidadas: llamar a una función del proceso y llamar a otras funciones
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, la definición de función anidada: para definir otras funciones dentro de una función
def f1():
def f2():
pass
- Buscando un perímetro circular o área buscan
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. La función de cierre
- 1. La premisa de
la función de cierre y el alcance namespace = + + función anidada función de objeto
punto central: el nombre de la relación es encontrar la etapa de definición de función prevalecer - 2. ¿Cuál es la función de cierre de
"cerrar" se refiere a la función es función en línea
hace referencia a la capa exterior contiene el nombre del ámbito de la función función de "paquete" se refiere a la función (en lugar del ámbito global)
concepto basado en objeto de función, que puede la función devuelve la llamada a ir a ninguna parte, pero la relación es en el ámbito de la definición de la función completa ha sido determinada, independientemente de la ubicación de la llamada de función.
Esa es la función son tratados como procesamiento de datos, siempre viene con el alcance prevalecer. Si la función contiene incrustado referencia al alcance externo (no alcance global) las variables, entonces la 'función anidada' es un cierre de función se refiere cierres (cierres)
función de cierre: espacio de nombres y alcance aplicación de una función anidada +
def f1():
x = 33333333333333333333
def f2():
print(x)
f2()
x=11111
def bar():
x=444444
f1()
def foo():
x=2222
bar()
foo()
- la función de cierre: objetos de función
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. Uso de cierre
- El Senado aprobó un plan:
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')
- El traspaso de parámetros Opción dos:
def outter(url):
# url='https://www.baidu.com'
def get():
response=requests.get(url)
print(len(response.text))
return get