博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一:函数的基础知识
阅读量:5122 次
发布时间:2019-06-13

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

今日 重点知识

一:函数是第一类对象

  1.函数名可以被传递

name = 'jason' x = name print(x) print(id(x),id(name)) def func():     print('func123') print('func') print(id(func)) f=func     #在函数定义阶段 func()#    在函数调用阶段 print(f,id(f),id(func)) f()       #其实指向的也是函数fun从指向航叔体代码的内存地址 2.函数名可以被当做参数传递给其他函数
def func():             # 第五步     print('from func')   #第六步 def index(args):        #第二步       func=args     print(args)      #     第三步     ====>print(func)   此时就是func中存的地址     args()             #  第四步     print('from index') # 第七步 index(func)         #   第一步 ''' 结果:  
    from func     from index
3.函数名可以被当做函数的返回值
def index():        #第七步     print('index')  #第八步 def func():         #第二步     print('func')   #第三步         打印func     return index    #第四步        把index作为返回值返回给res res = func()        # 第一步 print(res)          #第五步      res  相当于 index  就是答应他的地址 res()               #第六步     相当于index()
结果为:func         
index
4.函数名可以被当做容器类型的参数
def func():         #第二步     print('func1')  #第三步 print(func())      #第一步 l = [1,2,func,func()]   #第四步 print(l)                 #第五步
结果为:func1         None         func1         [1, 2, 
, None]

 二:名称空间

  名称空间是什么?

     就是放名字的地方
     详细解释:存放的是变量名与变量值的内存地址得绑定关系的地方
    要想访问一个变量的值 必须先去名称空间中拿到对应的名字 才能够访问变量的值

    1,名称空间的分类:

      1,内置名称空间

        即python自身内部创建好的,提前定义好的,例如 len, max, min

      2,局部名称空间

        在函数内部的,函数体内创建的名字都属于局部名称空间

      3,全局名称空间

        相对于文件级别的,在for while,中创建的名字都是全局名称空间的

    2,生命周期(名称空间)

      1,内置名称空间:在python解释器启动时就已经创建好的,关闭解释器立马销毁

       2,全局名称空间:右键运行执行文件时创建,执行结束完立马销毁

       3,局部名称空间:函数调用时,自动创建,函数执行完毕,立马销毁,自动销毁

    3,名称空间的查找顺序:

        名字的查找顺序:

          1,首先要确定你当前在那(全局还是局部)

            1,站在全局:首先在全局找,找不到再去内置名称空间找

            2,站在局部:首先在局部找,找不到再去全局找,全局无就去内置找。

+     总结:函数在定义阶段查找名字的顺序就已经固定了 不会因为函数的调用位置变化而改变(******) 

          局部与局部之间是并列关系,站在全局找,只有全局和内置

        作用域作用

作用域

         全局作用域:   全局有效,:

              内置名称空间

              全局名称空间

  局部作用域:  局部有效

          局部作用域

  在局部修改全局的变量:global   

  global 在局部修改全局的不可变数据类型

      局部修改全局 如果想修改多个 逗号隔开

   nonlocal:局部修局部 如果想修改多个 逗号隔开

 

 

 

 

 

转载于:https://www.cnblogs.com/Fzhiyuan/p/11167246.html

你可能感兴趣的文章
thymeleaf 模板语言简介
查看>>
Servlet & JSP系列文章总结
查看>>
Tornado 自定义session,与一致性哈希 ,基于redis 构建分布式 session框架
查看>>
CSS单位和颜色
查看>>
Mobiscroll的介绍【一款兼容PC和移动设备的滑动插件】
查看>>
Spring基础学习笔记-Bean的基础知识
查看>>
poj Going from u to v or from v to u? 强联通缩点+拓扑排序(或搜索)
查看>>
Hadoop源代码分析(二)
查看>>
Django中提供了6种缓存方式
查看>>
JDK安装与环境变量配置
查看>>
原生js实现缓动返回顶部
查看>>
1.4Activity保存现场状态
查看>>
关于mysql中GROUP_CONCAT函数的使用
查看>>
maven+springmvc下载excle文件——ie8可用
查看>>
Android中解析XML
查看>>
Fragment销毁时replace和add两个方法的区别
查看>>
android 多线程断点续传下载 三
查看>>
mongodb 2php 操作
查看>>
eclipse 断点调试快捷键
查看>>
Android 删除指定文件代码
查看>>