day10函数嵌套

一、命名关键字

就是在*后面参数都是命名关键字参数

特点是必须传值,结束函数必须按照key=value的形式,必须要用指定的key名

def foo(x,y,*,z)

  print(x,y,z)

foo(1,2,z=3)

二、函数的嵌套调用:在函数内又调用了其他函数

def max2(x,y)

if x>y:

  return x

else:

  return y

def max3(x,y,z):

res1=max2(x,y)

res2=max2(res1,z)

return res2

print(max3(11,200,1))

2、函数的嵌套定义:在函数内定义其他函数

def func1():

  print('aa')

  def fun2() #func2=内存地址

    print('bb')

   print(fun2)

   fun2()

fun1()

def f1():
print('f1')
def f2():
print('f2')
def f3():
print('f3')
f3()
f2()
f1()

三、名称空间:存放名字与值绑定关系的地方
名称空间分三类:
1、内置名称空间:存放python解释器自带的名字,在解释器启动时就生效,关闭则失效
2、全局名称空间:文件级别的名字,在执行文件的时候生效,在文件结束或者在文件执行间被删除失效


3、局部名称空间:存放函数内定义的名字(函数的参数以及函数内的名字都 存放与局部名称空间),
在函数调用时临时生效,函数结束则失效
def func(x):
  y=2
fun(1)

加载顺序:内置名称空间-》全局名称空间-局部名称空间
查找名字:局部名称空间->全局名称空间->内置名称空间


四:作用域
全局作用域:包含内置名称空间与全局名称空间的名字,
特点
在任何位置都能访问的到
该范围内的名字会伴随程序整个生命周期
局部作用域:包含的是局部名称空间的名字
特点:
只能在函数内使用
调用函数时生效,调用结束失效

函数在python中第一类对象?
1、可以被引用
2、可以当中参数传入
3、可以当中函数的返回值
4、可以当中容器类型的元素

def auth():
print('认证')
def reigster():
print('注册')
def search():
print('查看')

l={'1':auth,
'2':reigster,
'3':search,
}
def interactive():
while True:
print('''
1、认证
2、注册
3、查看
''')
choice=input('>>..').strip()
if choice in l:
l[choice]()
else:
print('非法操作')
interactive()

闭包函数
指定义在函数内部的函数
作用域关系在函数定义阶段就规定死了,与调用位置无关
将值以参数的形式传入

import requests

def get(url):
response=requests.get(url)
if response.status_code == 200:
print(response.text)


get('https://www.baidu.com')

import requests
import time

def outter(url): #url='https://www.baidu.com'

# url='https://www.baidu.com'
def get():
response=requests.get(url)
if response.status_code == 200:
print(response.text)

return get



baidu=outter('https://www.baidu.com')
python=outter('https://www.python.org')


原文地址:https://www.cnblogs.com/lg04551/p/8665309.html