博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
函数的进阶
阅读量:5038 次
发布时间:2019-06-12

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

函数的进阶

  1. 函数的参数

  • 函数的实参传递给形参的过程叫做传参: 函数的拓展性
  • 实参角度 -- 函数的调用者

    1. 位置参数: 从左至右,按照顺序,一一对应.
    2. 关键字参数: 一一对应.
    3. 混合参数: 位置参数在关键字参数前面.
  • 形参角度 --- 定义函数时

    1. 位置参数: 与实参角度位置参数一样.

    2. 默认值参数: 一定在位置参数后面,不传参数即沿用默认的参数.

    3. 动态参数(万能参数:*args,**kwargs)

      当函数传入的参数不定时,上面的传参方式解决不了问题

      • args: 将实参角度:定义一个函数时, 所有的位置参数聚合到一个元组中。

      • ******kwargs: 函数的定义时:将实参角度所有的关键字参数聚合成了一个字典,给了kwargs.

  • 形参的最终顺序
    • 位置参数---->*args--->默认值参数--->仅限关键字参数--->**kwargs
  1. *的魔性用法
    • 函数内:函数的执行时: * 代表打散,** 只能打散映射类型(字典) (key不能是int型)

    • 函数外:处理剩余元素,处理后的结果为列表形式

  2. 命名空间与作用域
    1. 命名空间:

      • 全局命名空间:我们直接在py文件中,函数外声明的变量
      • 内置命名空间:python最开始会开辟一个自己的命名空间 -- 内置命名空间
      • 局部命名空间:函数内部声明的变量,函数执行时创建
      • 加载顺序: 内置命名空间 => 全局命名空间 => 局部命名空间
      • 取值顺序: 局部命名空间 => 全局命名空间 => 内置命名空间
    2. 作用域: 变量或函数的声明周期

    3. 全局作用域: 内置命名空间 全局命名空间

    4. 局部作用域: 局部命名空间

      globals() # 查看全局作用域中的内容locals()  # 查看的是当前作用域中的内容
  3. 函数的嵌套
    # 函数可以互相嵌套:def outer():    def inner():        print('我是内部')    print('我是外部')    inner()outer()
  4. 拓展

    • global
      • 在局部作用域中可以更改全局作用域的变量(限于字符串,数字)
      • 利用global在局部作用域也可以声明一个全局变量
    • nonlocal

      • 不能更改全局变量
      • 在局部作用域中,对父级作用域(或者更外层作用域非全局作用域)的变量进行引用和修改,并且引用的哪层,从那层及以下此变量全部发生改变。

转载于:https://www.cnblogs.com/douzi-m/p/11234948.html

你可能感兴趣的文章
iOS界面跳转
查看>>
hibernate初学感触
查看>>
【基础】栈和堆的区别
查看>>
棋盘制作
查看>>
global name 'validate_on_submit' is not defined错误
查看>>
叫卖集体土地版“公租房 ” (zz)
查看>>
javascript array操作
查看>>
[AWDwR4] Getting AJAX to work in Rails 3 with jQuery
查看>>
CentOS 安装配置TFTP
查看>>
VMware中ubuntu忘记密码的解决办法
查看>>
navicat for mysql快捷键
查看>>
OI再见
查看>>
自定义单选框或者复选框
查看>>
xml知识点
查看>>
隐式类型转换
查看>>
目前国内几大著名报表软件(2014更新)
查看>>
我想要得那块牌—记烟台大学第一届"ACM讲堂"
查看>>
【LaTeX排版】LaTeX论文模版
查看>>
事务管理
查看>>
Http协议中Cookie详细介绍
查看>>