<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] ## 函數定義: * 定義: 函數是指將一組語句的集合通過一個名字(函數名)封裝起來,要想執行這個函數,只需調用其函數名即可 * 特性: 減少重復代碼 使程序變的可擴展 使程序變得易維護 ### 語法定義 * 不帶參數的函數 ``` def sayhi():#函數名 print("Hello, I'm nobody!") sayhi() #調用函數 ``` * 帶參數的函數 ``` def calc(x,y): res = x**y return res #返回函數執行結果 c = calc(a,b) #結果賦值給c變量 print(c) ``` > 參數可以讓你的函數更靈活,不只能做死的動作,還可以根據調用時傳參的不同來決定函數內部的執行流程 ## 函數參數 ### 形參和實參 簡單來說,形參就是函數定義的時候使用的參數,實參就是函數實際調用的時候傳入的參數 ![形參和實參](https://www.github.com/noah-luo/imags/raw/master/year/1546742518900.png) ### 默認參數 默認參數就是指函數定義時,給該參數指定了一個默認值,如果該參數最終傳入時指定了值就用指定值,沒有指定就用函數定義時給定的默認值 默認參數定義必須在非默認參數后面 ``` def stu_register(name,age,country="CN"): print("----注冊學生信息------") print("姓名:",name) print("age:",age) print("國籍:",country) stu_register("王山炮",22) stu_register("張叫春",21,"JPS") ``` > country 就是默認參數, ### 關鍵參數 正常情況下,給函數傳參數要按順序,不想按順序就可以用關鍵參數,只需指定參數名即可(指定了參數名的參數就叫關鍵參數). 關鍵參數必須放在位置參數(以位置順序確定對應關系的參數)之后 ``` def stu_register(name, age ,country='CN'): print("----注冊學生信息------") print("姓名:", name) print("age:", age) print("國籍:", country) ``` 調用可以這樣 `stu_register("王山炮", 22,country='JP')` 但不可以這樣 `stu_register("王山炮", age=22,'JP')` 也不能賦值多次 `stu_register("王山炮",22,age=25,country='JP' )` ### 非固定參數 若函數在定義時不確定用戶想傳入多少個參數,就可以使用非固定參數,須在普通參數之后定義 * `*args`元組類型非固定參數 元組類型非固定參數直接寫值就可以了 ``` def stu_register(name,age,*args): # *args 會把多傳入的參數變成一個元組形式 print(name,age,args) stu_register("Jack",32,"CN","Python") ``` > Jack 32 ('CN', 'Python') * `**kwargs`字典類型非固定參數 字典類型非固定參數,需要指定值對于的key ``` def stu_register(name,age,*args,**kwargs): # *kwargs 會把多傳入的參數變成一個dict形式 print(name,age,args,kwargs) stu_register("Jack",32,"CN","Python",sex="Male",province="ShanDong") ``` >Jack 32 ('CN', 'Python') {'province': 'ShanDong', 'sex': 'Male'} ## 返回值 函數外部的代碼要想獲取函數的執行結果,就可以在函數里用return語句把結果返回 ``` def stu_register(name, age, course='PY' ,country='CN'): print("----注冊學生信息------") print("姓名:", name) print("age:", age) print("國籍:", country) print("課程:", course) if age > 22: return False else: return True registriation_status = stu_register("王山炮",22,course="PY全棧開發",country='JP') if registriation_status: print("注冊成功") else: print("too old to be a student.") ``` > 注意 函數在執行過程中只要遇到return語句,就會停止執行并返回結果,so 也可以理解為 return 語句代表著函數的結束 如果未在函數中指定return,那這個函數的返回值為None ## 變量與作用域 ### 全局與局部變量 在函數中定義的變量稱為局部變量,在程序的一開始定義的變量稱為全局變量。 全局變量作用域是整個程序,局部變量作用域是定義該變量的函數。 當全局變量與局部變量同名時,在定義局部變量的函數內,局部變量起作用;在其它地方全局變量起作用。 ### 名稱空間 name space, 顧名思義就是存放名字的地方,存什么名字呢?舉例說明,若變量x=1,1存放于內存中,那名字x存放在哪里呢?名稱空間正是存放名字x與1綁定關系的地方 名稱空間共3種,分別如下 * locals: 是函數內的名稱空間,包括局部變量和形參 * globals: 全局變量,函數定義所在模塊的名字空間 * builtins: 內置模塊的名字空間 ### 作用域(scope) 通常來說,一段程序代碼中所用到的名字并不總是有效/可用的,而限定這個名字的可用性的代碼范圍就是這個名字的作用域。 不同變量的作用域不同就是由這個變量所在的命名空間決定的。 * 作用域查找順序LEGB ` locals -> enclosing function -> globals -> __builtins__` locals 是函數內的名字空間,包括局部變量和形參 enclosing 外部嵌套函數的名字空間 globals 全局變量,函數定義所在模塊的名字空間 builtins 內置模塊的名字空間 ### 如何在函數里修改全局變量? ``` name = "noah luo" def change_name(): global name name = "noah is luo gang" print("after change", name) change_name() print("在外面看看name改了么?", name) ``` > global name的作用就是要在函數里聲明全局變量name
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看