zoukankan      html  css  js  c++  java
  • Python函数高级

    函数对象

    在面向对象编程中 一切皆对象

    函数在python中是第一类对象

    • 函数可以这么用

      1. 可以被引用

        def func():
            print('hello world !')
        ​
        f=func
        f()
      2. 可以当做参数传入

        def func():
            print('hello world !')
            
        def func1(func):
            print('hello China !')
            func()
        ​
        f = func1(func)
      3. 可以当做函数的返回值

        a = 1
        def func():
            return a
        res = func()
        print(res)
        ​
        1
      4. 可以当做容器类型的元素

        def register():
            print("注册")
            
        def login():
            print("登录")
        ​
        def check():
            print("查看")
            
        l = [register,login,check]
        l[0]()

    函数的嵌套

    1. 函数的嵌套调用

      在函数内调用了其他函数

      def func():
          print('hello world !')
          
      def func1(func):
          print('hello China !')
          func()
      ​
      f = func1(func)
    2. 函数的嵌套定义

      在函数内又定义了其他函数,定义在函数内部的函数只能在函数内部用

      def func():
          print("hello world !")
          def func1():
              print("hello China")
       

    名称空间(name space)

    • 定义

      专门存名字的空间,存放名字与值绑定关系 (名字和地址)的地方。

    • 分类

      1. 内置名称空间(print、len、max)

        • 内置名称:存放python解释器自带的名字

        • 生效与失效:在解释器启动时即生效,解释器关闭时失效

      2. 全局名称空间

        • 全局名称:文件级别的名字(顶头写的)即不是内置名称也不是局部名称就是全局名称

        • 生效与失效:在执行文件时生效,在所有文件结束或在执行期间被删除,则失效。

      3. 局部名称空间

        • 局部名称:在函数内的名称就是局部名称

        • 生效与失效:调用时产生,函数结束时结束。函数内的名字和参数都存放于局部空间

      名称空间的加载顺序:内置 >>> 全局 >>> 局部

      名称空间的查找顺序:局部 >>> 全局 >>> 内置

    作用域

    • 定义:域》指的是区域,范围的意思,作用域即不同名称作用的范围

    • 全局作用域:包含内置名称空间和全局名称空间的名字

      • 特点:在任何位置都能访问得到

        该范围内的名字会伴随程序整个生命周期

    • 局部作用域:包含局部名称空间的名字

      • 特点:只能在函数内使用

      • 调用时生效,调用结束时失效

      globals(查看全局作用域中的内容) 表示的全局范围 就是所谓的全局作用域

      print(dir(globals()["__builtins__"]))

      locals(查看局部作用域中的内容)要注意的是你在全局中使用locals看到的就是全局的内容,与globals没有什么区别。

      print(locals()) # 在全局中查看作用域,相当于globals
      ​
      ​
      def func():
          a = 100
          print(locals())  # 在局部空间查看作用域
      ​
      func()

      global:明确声明,要使用全局中的名称

      nonlocal:明确声明,要使用上一层中的名称,如上一层没有则找上上层,但是注意 不能找到全局中

      注意:你在全局中使用locals 看到的就是全局的内容

    闭包函数

    • 定义:定义在函数内部的函数,并且该函数包含对外部函数作用域中名字的引用,该函数称为闭包函数

    • 作用域关系在函数定义阶段就规定死了,与调用位置无关。

      def outer():
          a = 1
          def inner():
              print(a)
              
          return inner
  • 相关阅读:
    2020.2.5随笔
    2020.2.4
    2020.2.3随笔
    2020.2.2随笔
    2020/2/1随笔
    python3 百度AI-v3之 人脸对比 & 人脸检测 & 在线活体检测 接口
    python:Json模块dumps、loads、dump、load介绍
    python3之selenium.webdriver 库练习自动化谷歌浏览器打开百度自动百度关键字
    python之https爬虫出现 SSL: CERTIFICATE_VERIFY_FAILED (同时打开fiddler就会出现)
    调试python 程序的几种方法总结
  • 原文地址:https://www.cnblogs.com/liusijun113/p/10034789.html
Copyright © 2011-2022 走看看