1.命名关键字参数

  格式:在*后面的参数都是命名关键字参数

  特点:

    1.必须被传值

    2.约束函数的调用者必须按照key=value的形式传值

    3.约束函数的调用者必须用我们指定的key名

 1 def auth(*args,**kwargs):
 2     """
 3     使用方式auth(name="egon",pwd="123")
 4     :param args:
 5     :param kwargs:
 6     :return:
 7     """
 8     # print(args,kwargs)
 9     if len(args) !=0:
10         print('必须用关键字的形式传参')
11         return
12     if 'name' not in kwargs:
13         print('必须用指定的key名name')
14         return
15     if 'pwd' not in kwargs:
16         print('必须用指定的key名pwd')
17         return
18
19     name=kwargs['name']
20     pwd=kwargs['pwd']
21     print(name,pwd)

2.函数嵌套

  1.函数的嵌套调用:在函数内又调用了其他函数

  

def max(x,y):if x>y:reryrn xelse: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 funcf = 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={'1':auth,'2':reigster,'3':search,'4':transfer,'5':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内被引用

转载于:https://www.cnblogs.com/guodengjian/p/8665479.html

python之路--day10-闭包函数相关推荐

  1. python之路---装饰器函数

    阅读目录 楔子 装饰器的形成过程 开放封闭原则 谈装饰器主要功能和装饰器固定结构 带参数的装饰器 多个装饰器装饰一个函数 返回顶部 楔子 作为一个会写函数的python开发,我们从今天开始要去公司上班 ...

  2. python装饰器函数-python之路——装饰器函数

    阅读目录 楔子 作为一个会写函数的python开发,我们从今天开始要去公司上班了.写了一个函数,就交给其他开发用了. deffunc1():print('in func1') 季度末,公司的领导要给大 ...

  3. python之路——内置函数和匿名函数

    楔子 在讲新知识之前,我们先来复习复习函数的基础知识. 问:函数怎么调用? 函数名() 如果你们这么说...那你们就对了!好了记住这个事儿别给忘记了,咱们继续谈下一话题... 来你们在自己的环境里打印 ...

  4. 初学python之路-day10

    基础部分先告一段落,今天开始学习函数. 一.函数:完成 特定 功能的代码块,作为一个整体,对其进行特定的命名,该名字就代表函数         -- 现实中:很多问题要通过一些工具进行处理 => ...

  5. Python之路----------内置函数

    1.abs(x)绝对值 1 #coding=utf-8 2 a = 1 3 b = -2 4 print(abs(a)) 5 print(abs(b)) 2.all(iterable)可迭代对象里面所 ...

  6. python之路---09 初始函数 参数

    二十七.初始函数 1.函数: 对代码块和功能的封装和定义 2.格式及语法 def  函数名()           #  定义 函数体 函数名()              #  调用 3.    r ...

  7. python之路--内置函数03

    一 . 正则表达式 匹配字符串 元字符. 除了换行\w 数字, 字母, 下划线\d 数字\s 空白符\n\t\b 单词的边界\W 非xxx\D\S[ ] 字符组 or的关系[^xxx] 非xxxx^ ...

  8. python之路day10-命名空间和作用域、函数嵌套,作用域链、闭包

    楔子 假如有一个函数,实现返回两个数中的较大值: def my_max(x,y):m = x if x>y else yreturn mbigger = my_max(10,20)print(b ...

  9. python命名空间和闭包_Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】...

    本文实例讲述了Python函数基础用法.分享给大家供大家参考,具体如下: 一.什么是命名关键字参数? 格式: 在*后面参数都是命名关键字参数. 特点: 1.约束函数的调用者必须按照Kye=value的 ...

最新文章

  1. python123平台作业答案第十一周_第十一周作业
  2. python 学习笔记十九 django深入学习四 cookie,session
  3. iOS-NSData与NSDictionary的互相转换
  4. Hystrix解决雪崩问题的两种手段
  5. 绝地求生5月22日服务器维护,绝地求生5月22日更新了什么内容 吃鸡5月22日维护公告...
  6. docker项目部署 php_「Docker部署PHP+Vue项目」- 海风纷飞Blog
  7. 程序员工作3年只涨2千,你不知道程序员有多难!
  8. java 单例 性能_java程序性能优化之设计优化---单例pk
  9. HTML 颜色值及脚本
  10. 使用Visual Studio 部署SharePoint时提示“路径中具有非法字符”
  11. flask-文件上传/下载
  12. C++中,类如果包含map/list等对象,慎用memset(0)
  13. MFC 用Gdiplus画曲线和直线
  14. Cobar介绍及配置
  15. rtx2060为什么叫智商卡_显卡怎么选,GTX1660TI亦是RTX2060?
  16. redis:CLUSTER cluster is down 解决方法
  17. 《炬丰科技-半导体工艺》SC-1颗粒去除和piranha后漂洗的机理研究
  18. Conflux TokenGazer AMA活动内容回顾
  19. 程序“媛”公号,越来越少了,这次推荐俩,轻拍!
  20. 滑头杨百万的股经:六分心态三分技巧一分运气

热门文章

  1. OpenCart如何添加货币
  2. android 多线程编程
  3. python使用ssh 中文_使用Python进行SSH的最简单方法是什么?
  4. 无人驾驶插秧机智能辅助系统_无人驾驶插秧机搭载北斗导航驾驶系统,误差仅在2.5厘米内...
  5. python转置列表代码_转置字典(从字典列表中提取一个键的所有值)
  6. 2020-08-21 Qt+MSVC 强制中文UTF-8编码
  7. 2018计算机二级c知识,2018全国计算机二级考试C语言常考知识点归纳
  8. 不使用ArcObjects直接查找SDE数据库信息
  9. GitHub上最火的40个iOS开源项目(一)
  10. Phonegap VS AppCan