python之路--day10-闭包函数
1.命名关键字参数
格式:在*后面的参数都是命名关键字参数
特点:
1.必须被传值
2.约束函数的调用者必须按照key=value的形式传值
3.约束函数的调用者必须用我们指定的key名
def auth(*args,**kwargs):
"""
使用方式auth(name="egon",pwd="123")
:param args:
:param kwargs:
:return:
"""
# print(args,kwargs)
if len(args) !=0:
print('必须用关键字的形式传参')
return
if 'name' not in kwargs:
print('必须用指定的key名name')
return
if 'pwd' not in kwargs:
print('必须用指定的key名pwd')
return name=kwargs['name']
pwd=kwargs['pwd']
print(name,pwd)
2.函数嵌套
1.函数的嵌套调用:在函数内又调用了其他函数
def max(x,y):
if x>y:
reryrn x
else:
return y
def max3(x,y,z):
res1 = max2(x,y)
res2 = max2(rea1,z)
return res2
print(max3(11,199,2))
2,函数的嵌套定义:在函数内又定义了其他函数
def func1():
print('from func1')
def func2(): #func2=内存地址
print('from func2') func1()
def f1():
print('f1')
def f2():
print('f2')
def f3():
print('f3')
f3()
f2()
f1() '''
f1
f2
f3
'''
3.名称空间和作用域
1.名称空间:存放名字和值绑定关系的地方
1.2.名称空间分类:
1.2.1内置名称空间:存放python解释器自带的名字,在解释器启动时就生效,解释器关闭则失效
1.2.2全局名称空间:文件级别的名字,在执行文件的时候生效,在文件结束或者在文件删除的时候失效
1.2.3局部名称空间:存放函数内定义的名字(函数的参数以及函数内名字都存放在局部变量空间)---在函数调用时临时生效,函数结束则失效
加载顺序:内置名称空间-----全局名称空间---局部名称空间
查找名字:局部名称空间-----全局名称空间-----内置名称空间
2:作用域
1.全局变量域:包含的是内置名称空间与全局名称空间的名字
特点:
在任何位置都能访问到
该范围内的名字会伴随程序整个生命周期
2.局部作用域:包含的是局部名称空间的名字
特点:
只能在函数内使用
调用函数是生效,调用结束失效
4,函数对象
1,函数可以被引用
def bar():
print('from bar') f =bar
f()
2,可以当作参数传入
def bar():
print(’from bar‘) def wrapper(func):
func()
wrapper(bar)
3,可以当作函数的返回值
def bar():
print(’from bar‘)
def foo(func):
return func f = foo(bar)
f()
4,可以当作容器类型的元素
def get():
print('from get') def put():
print('from put') l=[get,put] print(l) l[0]()
def auth():
print('登陆。。。。。') def reigster():
print('注册。。。。。') def search():
print('查看。。。。') def transfer():
print('转账。。。。') def pay():
print('支付。。。。') dic={
'':auth,
'':reigster,
'':search,
'':transfer,
'':pay
} def interactive():
while True:
print("""
1 认证
2 注册
3 查看
4 转账
5 支付
""")
choice=input('>>: ').strip()
if choice in dic:
dic[choice]()
else:
print('非法操作') interactive()
5,闭包函数
定义在函数内部的函数,并且该函数包含对外部函数作用域中名字的引用,该函数就成为闭包函数
def outter():
name='egon'
def inner():
print('my name is %s' %name) return inner inner()被称为闭包函数。
inner()定义在函数outter外部,outter函数的作用域内部变量name,在inner内被引用
python之路--day10-闭包函数的更多相关文章
- Python之路,Day10 - 异步IO\数据库\队列\缓存
Python之路,Day9 - 异步IO\数据库\队列\缓存 本节内容 Gevent协程 Select\Poll\Epoll异步IO与事件驱动 Python连接Mysql数据库操作 RabbitM ...
- Python之旅Day4 闭包函数 模块及模块倒入
闭包函数 闭包函数就是在内部函数当中有对外部函数名字的引用 ###代码示例1### def f1(): x =1 def f2(): print(x) return f2 f=f1() f() ### ...
- python之路——装饰器函数
阅读目录 楔子 装饰器的形成过程 开放封闭原则 谈装饰器主要功能和装饰器固定结构 带参数的装饰器 多个装饰器装饰一个函数 返回顶部 楔子 作为一个会写函数的python开发,我们从今天开始要去公司上班 ...
- 【python之路20】函数作为参数
1.函数可以作为参数 1)函数名相当于变量指向函数 2)函数名后面加括号表示调用函数 #!usr/bin/env python # -*- coding:utf-8 -*- def f1(args): ...
- python之路---装饰器函数
阅读目录 楔子 装饰器的形成过程 开放封闭原则 谈装饰器主要功能和装饰器固定结构 带参数的装饰器 多个装饰器装饰一个函数 返回顶部 楔子 作为一个会写函数的python开发,我们从今天开始要去公司上班 ...
- Python 空间名称与闭包函数
空间名称与闭包函数 名称空间 名称空间 namespaces:存放名字的地方,是对栈区的划分 名称空间在栈区中分为三种,详细的划分不同的空间,不同空间可以存放相同名字的名字 内置名称空间 存放的名字: ...
- python之路--第一类对象,函数名,变量名
一 . 第一类对象 函数对象可以像变量一样进行赋值 , 还可以作为列表的元素进行使用 可以作为返回值返回 , 可以作为参数进行传递 def func(): def people(): print('金 ...
- python之路——内置函数和匿名函数
阅读目录 楔子 内置函数 匿名函数 本章小结 楔子 在讲新知识之前,我们先来复习复习函数的基础知识. 问:函数怎么调用? 函数名() 如果你们这么说...那你们就对了!好了记住这个事儿别给忘记了,咱们 ...
- python基础语法7 闭包函数与装饰器
闭包函数: 1.闭包函数必须在函数内部定义 2.闭包函数可以引用外层函数的名字 闭包函数是 函数嵌套.函数对象.名称空间与作用域 结合体. # 直接传参 def func(x): print(x) f ...
随机推荐
- [BZOJ1006] [HNOI2008] 神奇的国度 (弦图)
Description K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即AB相互认识,BC相互认识,CA相互认识,是简洁高效的.为了巩固三角关系,K国禁止四边关系,五边关系 ...
- Java中高级面试题
一.基础知识: 1)集合类:List和Set比较,各自的子类比较(ArrayList,Vector,LinkedList:HashSet,TreeSet): 2)HashMap的底层实现,之后会问Co ...
- react-todoMVC脚手架
webpack.config.js var path = require('path'); // node中的 路径解析的模块 const HtmlWebpackPlugin =require('ht ...
- python数据库连接池设计
一.背景: 传统访问资源,一般分为一下几个步骤: 1.实例数据驱动对象与链接资源.2.实例操作资源游标.3.获取资源.4.关闭链接资源. 根据以上步骤,我们可以很简单使用这个原始方法来访问资源为我们业 ...
- mysql 数据库基本命令语句
mysql mariadb 客户端连接 mysql -uroot -p; 客户端退出exit 或 \q 显示所有数据库show databases;show schemas; 创建数据库create ...
- FNV算法实战
HASH算法介绍 Hash,一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长 ...
- window.open打开文件乱码
问题:刚开始使用window.open在IE兼容模式下打开文件下载出现乱码. 一开始以为是文件名是中文导致的.然后使用a标签的download属性更改文件名解决. <a class=" ...
- Angular -ui - BootStrap组件的解释以及使用
关于UI BootStrap UI BootStrap 是angularUI团队用纯粹angularJS语法编写的Bootstrap组件. 1. 关于ng-router(angular-router. ...
- 从分布式一致性到共识机制(一)Paxos算法
从分布式系统的CAP理论出发,关注分布式一致性,以及区块链的共识问题及解决. 区块链首先是一个大规模分布式系统,共识问题本质就是分布式系统的一致性问题,但是又有很大的不同.工程开发中,认为系统中存在故 ...
- 关于html表单的disabled属性的设置问题
首先,我的看法是无论disable的值是否有值,只要设置了disabled属性的表单,无论是否有值,无论值为什么,都会被禁用. 来看下面例子: 在一个群里有人说因为直接写在表单属性上是字符串,因为 ...