• python 100day notes (1)


    1. x1 + x2 +x3 + x4 = 8 多少正整数解
      上面的问题等同于将8个苹果分成四组每组至少一个苹果有多少种方案
      即用三个隔板插7个空位。
      答案C(7,3)
      =35

    2. __name__是Python中一个隐含的变量它代表了模块的名字

      只有被Python解释器直接执行的模块的名字才是__main__

    3. 最大公约数乘以最小公倍数就是这两个数的乘积

       假设两个数分别为A、B(均不为0)
      

      它们的最大公因数为a,最小公倍数为b
      c为A/a
      d为B/a
      则AB=acad
      AB/a=acad/a=acd
      因为acad(即AB)为AB的公倍数
      所以acd为AB的最小公倍数(有一个a重复了)
      即acd=b
      所以AB/a=b
      即AB=ab
      所以两个不为0的数的乘积等于这两个数的最小公倍数乘以最大公因数

       ```
       def lcm(x, y):
           return x * y // gcd(x, y)
       ```
      
    4. 作用域 main里a是全局变量

      def foo():
          b = 'hello'
      
          def bar():  # Python中可以在函数内部再定义函数
              c = True
              print(a)
              print(b)
              print(c)
      
          bar()
          # print(c)  # NameError: name 'c' is not defined
      
      
      if __name__ == '__main__':
          a = 100
          # print(b)  # NameError: name 'b' is not defined
          foo()
      
      def foo():
      a = 200
      print(a)  # 200
      
      
      if __name__ == '__main__':
          a = 100
          foo()
          print(a)  # 100
      

      在调用foo函数后,我们发现a的值仍然是100,这是因为当我们在函数foo中写a = 200的时候,是重新定义了一个名字为a的局部变量,它跟全局作用域的a并不是同一个变量,因为局部作用域#中有了自己的变量a,因此foo函数不再搜索全局作用域中的a。如果我们希望在foo函数中修改全局作用域中的a,代码如下所示。

      def foo():
          global a
          a = 200
          print(a)  # 200
      
      
      if __name__ == '__main__':
          a = 100
          foo()
          print(a)  # 200
      
    5. 减少全局变量

      在实际开发中,我们应该尽量减少对全局变量的使用,因为全局变量的作用域和影响过于广泛,可能会发生意料之外的修改和使用,除此之外全局变量比局部变量拥有更长的生命周期,可能导致对象占用的内存长时间无法被垃圾回收。事实上,减少对全局变量的使用,也是降低代码之间耦合度的一个重要举措,同时也是对迪米特法则的践行。减少全局变量的使用就意味着我们应该尽量让变量的作用域在函数的内部,但是如果我们希望将一个局部变量的生命周期延长,使其在函数调用结束后依然可以访问,这时候就需要使用闭包,这个我们在后续的内容中进行讲解。

      这一点点的改进其实就是在我们理解了函数和作用域的基础上跨出的巨大的一步。

      def main():
          # Todo: Add your code here
          pass
      
      
      if __name__ == '__main__':
          main()
      
  • 相关阅读:
    如果 TCP 是一场恋爱:遇到心动的女孩时,如何去把握?
    再来聊一聊「动态规划」
    如何判断一个数是否在 40 亿个整数中?
    写代码之外,如何再赚一份工资?
    学好这13种数据结构,应对各种编程语言(C++版)
    GitHub 标星 3w+,很全面的算法和数据结构知识
    和程序员小吴学算法文章导航
    Broadcast组件——收发广播应用——捕获屏幕的变更事件——竖屏与横屏切换
    homebrew
    git连接gitlab远程仓库
  • 原文地址:https://www.cnblogs.com/wangjiale1024/p/11327167.html
Copyright © 2020-2023  润新知