冰山道人吧 关注:9贴子:572

回复:Python学习笔记

取消只看楼主收藏回复



IP属地:山东48楼2017-09-14 21:59
回复

    这是小甲鱼的一课,我没看懂。主要讲的是局部变量和全局变量。


    IP属地:山东49楼2017-09-15 22:44
    回复
      广告
      立即查看
      下面是我从网上找的解释▼▼▼▼▼▼▼▼▼▼▼


      IP属地:山东50楼2017-09-15 22:46
      回复
        1.定义的函数内部的变量名如果是第一次出现, 且在=符号前,那么就可以认为是被定义为局部变量。在这种情况下,不论全局变量中是否用到该变量名,函数中使用的都是局部变量。例如:

        输出结果是123。说明函数中定义的变量名num是一个局部变量,覆盖全局变量。


        IP属地:山东51楼2017-09-15 22:48
        回复
          再例如:

          输出结果是:UnboundLocalError: local variable 'num' referenced before assignment。提示错误:局部变量num在赋值前被应用。也就是说该变量没有定义就被错误使用。由此再次证明这里定义的是一个局部变量,而不是全局变量。


          IP属地:山东52楼2017-09-15 22:52
          回复
            2.函数内部的变量名如果是第一次出现,且出现在=符号后面,且在之前已被定义为全局变量,则这里将引用全局变量。例如:

            输出结果是200。
            如果变量名num在之前没有被定义为全局变量,则会出现错误提示:变量没有定义。例如:

            输出结果是:NameError: name 'num' is not defined。


            IP属地:山东53楼2017-09-15 22:57
            回复
              3.函数中使用某个变量时,如果该变量名既有全局变量也有局部变量,则默认使用局部变量。例如:

              输出结果是300。


              IP属地:山东54楼2017-09-15 23:00
              回复
                4.在函数中将某个变量定义为全局变量时需要使用关键字global。例如:

                输出结果分别是200和200。这说明函数中的变量名num被定义为全局变量,并被赋值为200。再例如:

                输出结果分别是300和300。


                IP属地:山东55楼2017-09-15 23:07
                回复
                  广告
                  立即查看
                  当你在函数定义内声明变量的时候,它们与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是 局部 的。这称为变量的 作用域 。所有变量的作用域是它们被定义的块,从它们的名称被定义的那点开始。
                  如果你想要为一个定义在函数外的变量赋值,那么你就得告诉Python这个变量名不是局部的,而是 全局 的。我们使用global语句完成这一功能。没有global语句,是不可能为定义在函数外的变量赋值的。
                  你可以使用定义在函数外的变量的值(假设在函数内没有同名的变量)。然而,我并不鼓励你这样做,并且你应该尽量避免这样做,因为这使得程序的读者会不清楚这个变量是在哪里定义的。使用global语句可以清楚地表明变量是在外面的块定义的。
                  你可以使用同一个global语句指定多个全局变量。例如global x, y, z。


                  IP属地:山东56楼2017-09-15 23:10
                  回复



                    IP属地:山东57楼2017-09-16 21:51
                    收起回复




                      IP属地:山东58楼2017-09-16 21:54
                      收起回复


                        IP属地:山东59楼2017-09-16 22:15
                        回复


                          IP属地:山东60楼2017-09-17 21:40
                          回复


                            IP属地:山东61楼2017-09-17 21:41
                            回复
                              广告
                              立即查看



                              IP属地:山东62楼2017-09-18 21:25
                              回复