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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                [TOC] <br> ### 函數的定義 >[info]函數是對程序邏輯進行結構化或過程化的一種編程方法。能將整塊代碼巧妙地隔離成易于管理的小塊,把重復代碼放在函數中而不是進行大量的拷貝。 在python中,使用關鍵字`def`來定義函數,格式如下: ```python def say_hello(name): """ 對某人打招呼 :param name: 用戶名姓名 :return: """ print("Hello,{user}".format(user=name)) ``` `def` 關鍵字后面緊跟著函數名稱,這個實例中的函數名稱就是`say_hello`。 在函數名稱后,允許傳入參數,參數可以是任意一種數據類型,這里實例中表示在使用say_hello函數時,需要傳入一個用戶名`name`,在函數內部會使用到這個`name`的變量。 定義好函數名稱和參數后,使用`:`結束,換行縮進四個字符后,開始函數體,就是函數需要執行的代碼塊。 函數體的第一行,我們經常使用一個三引號包含的字符串,作為函數的文檔說明。 文檔說明不是必須的,但是寫一個清晰簡潔的文檔說明是一個非常好的編程習慣,有很多工具可以根據文檔說明直接生成接口文檔哦,在使用方調用這個接口時,也能清晰知道該函數的描述信息。 ### 函數的調用 以上實例,函數定義好后,當程序執行到函數定義位置時,會將函數加載到內存中儲存起來,但是不會直接執行函數,需要用戶明確調用才會執行函數體中的代碼塊。 在python中,我們使用一對圓括號來調用函數。如 ```python say_hello('Milton') ``` 運行結果: ```cmd Hello,Milton ``` 能否將函數賦值給一個變量?當然可以,如下 ```python print(say_hello) # 打印函數名,可知道函數已被加載在內存中 greet=say_hello # 將函數賦值給greet greet("Milton") # greet具有函數say_hello的功能,在greet后面跟著()就表示函數調用 ``` 運行結果: ```cmd <function say_hello at 0x000002400B263E18> Hello,Milton ``` ### 函數的返回值 每個函數都會有返回值,函數返回使用關鍵字`return`,以上實例中沒有明確return,實際上會默認返回None ```python result=say_hello("Cherish") # 將函數的調用結果賦值給result print(result) # 打印result就知道函數的返回值了 ``` 運行結果: ```cmd None ``` 在實際使用中,可能并不是簡單的調用函數,在函數中打印一句話就完事了,而是希望獲得某些數據返回給調用方,進行數據的使用,這時就需要在函數中使用`return`特定的內容了。 如下定義一個做加法運算的函數 ```python def add(a,b): """ 對兩個數據做加法運算,返回對應結果 :param a: 數字a :param b: 數字b :return: a+b 的結果值 """ result=a+b return result s1=add(1,2) # 將函數返回值,賦予一個變量s1 s2=add(1,9) print("s1 =",s1) # 打印函數返回值 print("s2 =",s2) print("s2-s1 =",s2-s1) ``` 運行結果如: ```cmd s1 = 3 s2 = 10 s2-s1 = 7 ``` ### 局部變量與全局變量 函數體中的變量,屬于局部變量,離開函數體后,就被銷毀 函數外中的變量,屬于全局變量,如果想在函數體中使用全局變量,則需要使用關鍵字`global` 進行聲明 實例如下: ```cmd >>> money=100 >>> percent=0.8 >>> def get_money(): ... global money ... money = money - 1 ... percent = 0.5 ... score = 60 ... >>> get_money() >>> money 99 >>> percent 0.8 >>> score Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'score' is not defined >>> get_money() >>> money 98 ``` 由上面示例可知,money屬于全局變量,在函數get_money中,使用了`global`聲明了money,說明money使用了全局的變量,在函數體中,調用一次,money就-1。 在函數中,雖然也有變量percent,變量名與全局變量名一致,但是不屬于同一個變量,同理,在函數內定義了變量 score,屬于局部變量,在函數外無法使用,一旦在函數外使用,則會報錯:NameError: name 'score' is not defined ### 函數的參數說明 #### 位置參數 安裝函數定義中的參數位置,傳入對應參數值 ```python def say_hello(age,name="Milton"): # 默認值參數必須在沒有默認值參數的后面,否則出錯 print("Hello,{user}. I am {age} years old".format(user=name,age=age)) say_hello(18,"Cherish") # 必須按照函數定義中的參數位置,對應傳入值 say_hello(28) # 第二個參數有默認值,允許不傳值 ``` 運行結果: ```cmd Hello,Cherish. I am 18 years old Hello,Milton. I am 28 years old ``` #### 關鍵字參數 用于函數調用,通過“鍵-值”形式加以指定。可以讓函數更加清晰、容易使用,同時也清除了參數的順序需求。 ```python def say_hello(age,name): print("Hello,{user}. I am {age} years old".format(user=name,age=age)) say_hello(age=16,name="Evan") say_hello(name="Evan",age=16) say_hello(18,name="Milton") ``` 運行結果: ```cmd Hello,Evan. I am 16 years old Hello,Evan. I am 16 years old Hello,Milton. I am 18 years old ``` **注意點:** 1. 關鍵字參數之間不存在先后順序 2. 有位置參數時,**位置參數必須在關鍵字參數的前面**,如上, `say_hello(name="Milton",18)`則會報錯:SyntaxError: positional argument follows keyword argument #### 參數默認值 為參數提供默認值,調用函數時可傳可不傳該默認參數的值(注意:所有位置參數必須出現在默認參數前,包括函數定義和調用 ```python def say_hello(age,name="Milton"): print("Hello,{user}. I am {age} years old".format(user=name,age=age)) say_hello(18) #調用函數時,不傳入參數,則使用默認函數 say_hello(18,"Cherish") #調用函數時,傳入指定參數,則使用對應參數 ``` 運行結果如: ```cmd Hello,Milton. I am 18 years old Hello,Cherish. I am 18 years old ``` #### 不定長參數 ##### 包裹位置參數 - 元組(*args) 我們傳進的所有參數都會被args變量收集,它會根據傳進參數的位置合并為一個元組(tuple),args是元組類型 ```python def say_hello(*args): print(args) say_hello("Milton","Cherish","Evan") # 不定長位置參數傳參 data=("Milton","Cherish","Evan") say_hello(*data) # 元組解包裹傳參 ``` 運行結果: ```cmd ('Milton', 'Cherish', 'Evan') ('Milton', 'Cherish', 'Evan') ``` ##### 包裹關鍵字參數 -字典 (**kwargs) kargs是一個字典(dict),收集所有關鍵字參數 ```python def say_hello(**kwargs): print(kwargs) say_hello(name="Milton",age=31,sex="M") # 不定長關鍵字傳參 data={'name': 'Cherish', 'age': 18, 'sex': 'G'} say_hello(**data) # 字典解包裹傳參 ``` 運行結果: ```cmd {'name': 'Milton', 'age': 31, 'sex': 'M'} {'name': 'Cherish', 'age': 18, 'sex': 'G'} ``` ### 匿名函數 有一種特殊的函數,叫匿名函數,它可以不用定義直接使用 在python,使用Lambda表達式,生成匿名函數 格式如: ```python lambda 參數:操作(參數) ``` 例子: ```cmd >>> f=lambda x:x+1 >>> f(1) 2 ``` lambda語句中,**冒號前是參數,可以有多個,用逗號隔開,冒號右邊的是返回值** 還記得前面的加法運算函數 add(a,b) 么,這里使用lambda表達式,可以非常簡潔完成。如下 ```cmd >>> f=lambda x,y:x+y >>> f(1,3) 4 ``` <hr style="margin-top:100px"> :-: ![](https://box.kancloud.cn/2ff0bc02ec938fef8b6dd7b7f16ee11d_258x258.jpg) ***微信掃一掃,關注“python測試開發圈”,了解更多測試教程!***
                  <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>

                              哎呀哎呀视频在线观看