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

    三元运算

    a = 1
    b = 5
    c = a if a>b else b
    print(c)

    构成

    变量 = 条件返回True的结果 if 条件 else 条件返回False的结果

    必须要有返回的结果

    必须要有if和else

    只能是简单的情况

    def func(a,b):
        return a if a>b else b
    c = func(3,5)
    print(c)

    函数进阶

    命名空间和作用域

    命名空间分为:内置命名空间,全局命名空间,局部命名空间

    内置命名空间

      就是python解释器一启动就可以使用的名字,存储在内置命名空间中

      内置的名字在启动解释器的时候被加载进内存里

    全局命名空间

      是在程序从上到下被执行的过程中依次被加载进内存的

      放置了我们设置的所有变量名和函数名

    局部命名空间

      就是函数内部定义的名字

      当调用函数的时候,才会产生这个名称空间,随着函数执行的结束,这个命名空间就又消失了

    相关联系

    在局部;可以使用全局,内置命名空间中的名字

    在全局:可以使用内置命名空间的名字,但是不能用局部中的名字

    在内置:不能使用局部和全局的名字

    这个叫 依赖倒置原则

    在正常情况下,直接使用内置的名字

    当我们在全局定义了和内置名字空间中同名的名字时,会使用全局的名字

    当本级有的时候,就不向上一级寻找

    当本级没有的时候就向上一级寻找

    作用域

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

    全局作用域

      作用在全局,内置和全局命名空间中的名字都属于全局作用域

    局部作用域

      作用在局部 函数(局部名字看见中的名字属于局部作用域)

    对于不可变数据类型,在局部可以查看全局作用域中的变量

    但是不能直接修改

    如果想修改,需要在程序的开始添加global声明

    如果在局部(函数)内声明一个global变量,那么这个变量在局部的所有操作将多全局的变量有效

    locals和globals

    locals   指的是 本地的   它的作用是放在哪里就打印哪里的名字,如果在全局就打印全局,如果在局部就打印局部

    globals   不管在哪里 永远打印全局的名字

  • 相关阅读:
    LeetCode-49. Group Anagrams
    LeetCode-242.Valid Anagram
    LeetCode-239.Sliding Window Maximum
    LeetCode-703. Kth Largest Element in a Stream
    LeetCode-225.Implement Stack using Queues
    LeetCode-232.Implement Queue using Stacks
    LeetCode-25. Reverse Nodes in k-Group
    LeetCode-142.Linked List Cycle II
    LeetCode-141. Linked List Cycle
    LeetCode-24.Swap Nodes in Pairs
  • 原文地址:https://www.cnblogs.com/GrandDarkness/p/8125918.html
Copyright © 2011-2022 走看看