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

回复:Python学习笔记

只看楼主收藏回复

python只有函数,没有过程。


IP属地:山东47楼2017-09-14 21:46
回复


    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
                              回复