博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
函数嵌套-名称空间与作用域-函数对象-闭包函数
阅读量:6118 次
发布时间:2019-06-21

本文共 4824 字,大约阅读时间需要 16 分钟。

一、可变长度参数*的应用场景     def sum2(*args):    #args=(1,2,3)         res=0         for num in args:             res+=num         return res     print(sum2(1,2,3,4,5,6,7))     ** 的应用场景     def auth(name,pwd,**kwargs):         print(name)         print(pwd)         print(kwargs)     auth(name='egon',pwd='123',group='group1') 二、命名关键字参数     什么是命名关键字参数?     格式:在*后面参数都是命名关键字参数     特点:         1 必须被传值         1 约束函数的调用者必须按照key=value的形式传值         2 约束函数的调用者必须用我们指定的key名         使用方式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)     auth('egon','123')     auth(name='egon',pwd='123') #约束函数的调用者必须用key=value的形式传值     auth('egon',pwd='123')     auth(name='egon',pwd='123')     auth('egon',123)     auth(x='egon',y='123')     print(help(auth)) 三、函数的嵌套调用:在函数内又调用了其他函数         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,199,2)) 四、函数的嵌套定义:在函数内又定义其他函数         def f1():             print('f1')             def f2():                 print('f2')                 def f3():                     print('f3')                 f3()             f2()         f1()         '''         f1         f2         f3         ''' 五、名称空间:存放名字与值绑定关系的地方         二:名称空间分为三类         1 内置名称空间:存放Python解释器自带的名字,在解释器启动时就生效,解释器关闭则失效         2、全局名称空间:文件级别的名字,在执行文件的时候生效,在文件结束或者在文件执行期间被删除则失效         x=1         def func():             name='egon'         del func         3、局部名称空间:存放函数内定义的名字(函数的参数以及函数内的名字都存放与局部名称空间),             在函数调用时临时生效,函数结束则失效         def func(x):             y=2         func(1)         重要特别注意:             加载顺序:内置名称空间-》全局名称空间-》局部名称空间             查找名字:局部名称空间-》全局名称空间-》内置名称空 六、作用域         全局作用域:包含的是内置名称空间与全局名称空间的名字,         特点         1在任何位置都能够访问的到         2该范围内的名字会伴随程序整个生命周期         局部作用域:包含的是局部名称空间的名字         特点:         1、只能在函数内使用         2、调用函数时生效,调用结束失效 七、函数在python中是第一类对象?     1、func可以被引用         f=func     2、func可以当作参数传给x         def bar(x):             print(x)             x()         bar(func)     3、func还可以当作返回值         def bar(x): # x=func             return x #return func         res=bar(func) #res=func         # print(res)         res()     4 可以当中容器类型的元素         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() l=[auth,reigster,search,interactive] print(l) 八、闭包函数 闭:指的是定义在函数内部的函数 !!!作用域关系 在函数定义阶段就规定死了,与调用位置无关 def outter(): x=2 def inner(): # x=1 print('from inner',x) return inner def foo(): x=1111111111111111111111111111 f() foo() 闭包函数: 1、定义在函数内部的函数 2、 并且该函数包含对外部函数作用域中名字的引用,该函数就称为闭包函数 def outter(): name='egon' def inner(): print('my name is %s' %name) return inner f=outter() 了解: 为函数体传值的方式 方式一:将值以参数的形式的传入 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') baidu() baidu() python()

转载于:https://www.cnblogs.com/zhaodafa/p/8665376.html

你可能感兴趣的文章
MWeb 1.4 新功能介绍二:静态博客功能增强
查看>>
linux文本模式和文本替换功能
查看>>
Windows SFTP 的安装
查看>>
摄像机与绕任意轴旋转
查看>>
rsync 服务器配置过程
查看>>
预处理、const与sizeof相关面试题
查看>>
爬虫豆瓣top250项目-开发文档
查看>>
Elasticsearch增删改查
查看>>
oracle归档日志增长过快处理方法
查看>>
有趣的数学书籍
查看>>
teamviewer 卸载干净
查看>>
多线程设计模式
查看>>
解读自定义UICollectionViewLayout--感动了我自己
查看>>
SqlServer作业指定目标服务器
查看>>
UnrealEngine4.5 BluePrint初始化中遇到编译警告的解决办法
查看>>
User implements HttpSessionBindingListener
查看>>
抽象工厂方法
查看>>
ubuntu apt-get 安装 lnmp
查看>>
焊盘 往同一个方向增加 固定的长度方法 总结
查看>>
eclipse的maven、Scala环境搭建
查看>>