名称空间的作用域
作用域:
就是作用的范围
1. 内置的
# 在任何阶段任何时间都可以使用 (全局有效)
2. 全局的
# 在任何阶段任何时间都可以使用 (全局有效)
3. 局部的
# 在函数内部阶段使用 (局部有效)
1.函数名可以当成变量赋值
def index():
# print('from index')
'''函数名不加括号就是函数的内存地址'''
# a = index
# a()
# print(a)
2.函数名可以当成变量赋值
def index():
# print('from index')
#
# def func(a):
# # print(a) # a => index
# a()
# print('from func')
# func(index)
# func(index())
3.函数名可以当成函数的返回值
def index():
# print('from index')
#
# def func():
# print('from func')
# return index # 返回的就是index函数的内存地址
#
# res=func() # res就是index函数的内存地址
# res()
4.函数名可以当成容器类型的元素
def index():
# print('from index')
#
# return 'from index'
#
# # l = [11, 22, 33, index]
# l = [11, 22, 33, index()]
# print(l)
'''函数名只要加括号就会执行!!!'''
补充:简易注册的函数形式
func_dict = {
'1': register,
'2': login,
'3': transfer,
'4': shopping,
'5': withdraw,
'6': chongzhi,
}
while True:
print("""
1. 注册
2. 登录
3. 转账
4. 购物
5. 提现
6. 充值
""")
choice = input('请输入编号:').strip()
# 判断用户输入的编号在不在fund_dict这个字典里面
if choice in func_dict:
func_name=func_dict.get(choice) # 函数的内存地址
func_name()
else:
print('不存在')
函数的嵌套调用
例子:
def index():
# print('from index')
#
# def func():
# index()
# print('from func')
#
# func()
def my_max(a, b):
if a > b:
return a
return b
小案例:
def my_max(a, b):
if a > b:
return a
return b
# 判断4个数的大小,返回大的
def many_max(a, b, c, d):
res=my_max(a, b) # b
res1=my_max(res, c)
res2=my_max(res1, d)
return res2
ret=many_max(1,2,3,4)
print(ret)
函数的嵌套定义
在函数内部定义函数
把复杂的功能隐藏起来,暴露给外界一个简单的接口
def all_func(type):
def register():
pass
def login():
pass
def shopping():
pass
def transfer():
pass
if type == '1':
register()
elif type == '2':
login()
elif type == '3':
shopping()
elif type == '4':
transfer()
else:
print('不存在')
all_func('1') # 注册功能
all_func('2') # 登录
闭包函数
闭:定义在函数内部的函数
包:内部函数使用外部函数名称空间的名字
只有同时满足以上两个条件的函数才是闭包函数
'''爬虫小知识'''
import requests
def func(url):
# url = 'http://www.baidu.com'
def get_content():
# url = 'http://www.jd.com'
# res=requests.get('http://www.baidu.com')
res=requests.get(url)
if res.status_code == 200:
with open(r'aaa.html', 'wb') as f:
f.write(res.content)
return get_content
# res=func() # get_content
# res('http://www.jd.com')