博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python(动态传参、命名空间、函数嵌套、global和nonlocal关键字)
阅读量:5934 次
发布时间:2019-06-19

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

一、函数的动态传参

  1.*args位置参数动态传参

def chi(*food):    print(food)chi("烧烤","火锅","虾吃虾涮","烤鱼")
View Code

    多个位置参数传递进去,收到的内容是元组tuple,动态参数的位置必须要在位置参数后面

  2**kwargs 关键字参数动态传参

def chi(**food):    print(food)chi(zhangqing="吃点好的",lianda="吃不辣的",徐建="方便面")#{'zhangqing': '吃点好的', 'lianda': '吃不辣的', '徐建': '方便面'}#输出结果是以字典的形式
View Code

  顺序:位置参数、*args、默认值、**kwargs

  def func(*args,**kwargs):   这个样式的函数比较强大,能满足的需求很多。

    pass

  形参的位置*,**:聚合

  实参的位置*,**:打散

    位置参数的动态传参:把list、tuple、set、str 进行迭代打散

    关键字动态传参: 打散成字典

二、命名空间

  1.内置命名空间:存放在python解释器为我们提供名字的如list、tuple、str等这些都是内置命名空间。

  2.全局命名空间:我们在py文件中,函数外生命的变量都属于全局命名空间。

  3.局部命名空间:在函数中生命的变量会放在局部命名空间。

  作用域:

    1.全局作用域:内置+全局

    2.局部作用域:局部(函数被调用)

  globals() 查看全局中的内容

  locals() 查看当前作用域中的内容

三、函数嵌套

  *只要遇见了()就是函数的调用,如果没有()就不是函数的调用。

  *函数可以互相的嵌套,无限的嵌套。

四、global和nonlocal关键字

  global:在局部访问全局中的内容

a = 100 def func():        global a    # 加了了个global表示不不再局部创建这个变量量了了. ⽽而是直    接使⽤用全局的a        a = 28        print(a)func() print(a)    #global表⽰示. 不再使⽤用局部作⽤用域中的内容了了. ⽽而改⽤用全局作⽤用域中的变量量
View Code

  nonlocal:在局部寻找外层函数中离他最近的那个变量,但是不会到全局中寻找。

a = 10 def func1():        a = 20        def func2():        nonlocal a                a = 30                print(a)        func2()        print(a)func1() 结果: 加了nonlocal 30 30 不不加nonlocal 30 20
View Code

 

转载于:https://www.cnblogs.com/qq849784670/p/9449424.html

你可能感兴趣的文章
我的友情链接
查看>>
Cacti中文版安装配置
查看>>
TCP连接优化
查看>>
Lync Server 2010的部署系列_第十八章 配置Exchange UM与Lync Server语音集成
查看>>
鸟哥的linux私房菜-shell简单学习-1
查看>>
js判断是否安装某款APP
查看>>
@Autowired与@Resource的区别
查看>>
我的友情链接
查看>>
记忆碎片
查看>>
实例演示图片上传
查看>>
使用GNS3+VMware搭建大型网络拓扑
查看>>
路由协议的防环机制
查看>>
安卓学习笔记1
查看>>
JAVA面向对象-----多态
查看>>
办公室日常管理信息系统 数据库课程设计
查看>>
(素材源码)猫猫学IOS(十一)UI之图片自动轮播
查看>>
(素材源码)猫猫学IOS(十八)UI之QQ聊天布局_键盘通知实现自动弹出隐藏_自动回复...
查看>>
Managing Spark data handles in R
查看>>
python使用安装ipdb
查看>>
博客园文章添加版权信息的方法
查看>>