zoukankan      html  css  js  c++  java
  • 函数的进阶

    函数的进阶

    函数的注释

    def login(user,pwd):
        """
        登录函数
        :param user: 用户名
        :param pwd: 密码
        :return: 校验后的账号和密码
        """
        print(111)
        
    print(login.__doc__)        
    print(login.__name__)  # login

    命名空间和作用域

    命名空间分为三种:

    内置空间——python解释器中所有代码

    全局空间——自己写的py文件

    局部空间——函数中的代码

    加载顺序:

      内置空间 —> 全局空间 —>局部空间

    取值顺序:

      局部空间 —> 全局空间 —>内置空间

    作用域:

    全局作用域:包含内置空间和全局空间

    局部作用域:只在局部空间内

    global和nonlocal关键字

    global:

      1,声明一个全局变量。

      2,在局部作用域想要对全局作用域的全局变量进行修改时,需要用到 global(限于字符串,数字)。

    def func():
        global a
        a = 3
    func()
    print(a)
    
    
    count = 1
    def search():
        global count
        count = 2
    search()
    print(count)

    注意:对可变数据类型(list,dict,set)可以直接引用不用通过global

    nonlocal:

      1,不能修改全局变量。

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

    def add_b():
        b = 42
        def do_global():
            b = 10
            print(b)
            def dd_nonlocal():
                nonlocal b
                b = b + 20
                print(b)
            dd_nonlocal()
            print(b)
        do_global()
        print(b)
    add_b()

    函数的嵌套

    函数的嵌套定义

    def func():
        print(3)
        def f():
            print(1)
        print(2)
        f()
    func()

    函数的嵌套调用

    def max2(x,y):
        m  = x if x>y else y
        return m
    
    def max4(a,b,c,d):
        res1 = max2(a,b)
        res2 = max2(res1,c)
        res3 = max2(res2,d)
        return res3
    
    # max4(23,-7,31,11)

     函数名的使用

    直接打印函数名得到函数的内存地址

    函数名可以当做值赋值给变量

    函数名可以当做元素放到容器里

  • 相关阅读:
    1-1-折纸问题
    调整数组顺序使奇数位于偶数前面
    在O(1)时间删除链表结点
    打印1到最大的n位数
    数值的整数次方
    二进制中1的个数
    变态跳台阶
    旋转数组的最小数字
    用两个栈实现队列
    Swift学习笔记(5):集合类型
  • 原文地址:https://www.cnblogs.com/yaoyanxin007/p/10531385.html
Copyright © 2011-2022 走看看