重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
python中調用函數的過程中形參和實參的命名必須不一樣。變量名和函數名不能相同,否則會進行替代因為python是不聲明類型的,不該出現重復的名字看很多人點贊我就更新一波,以免誤導:其實python也是支持相同函數名的,只是不是高級編程是幾乎用不到的,具體實現是靠自帶的裝飾器functools.singledispatch實現的單分派的設計模式。
成都做網站、網站建設介紹好的網站是理念、設計和技術的結合。創新互聯擁有的網站設計理念、多方位的設計風格、經驗豐富的設計團隊。提供PC端+手機端網站建設,用營銷思維進行網站設計、采用先進技術開源代碼、注重用戶體驗與SEO基礎,將技術與創意整合到網站之中,以契合客戶的方式做到創意性的視覺化效果。
上一期我們學習參數傳遞怎么傳遞,也了解了參數的幾種類型。
首先,我們再來回顧一下,形參和實參:
形參是在定義函數時定義的,放在函數名后面的圓括號里,可為空
實參是調用函數時為形參傳入具體的參數值
簡單總結一下,誰調用函數,誰就負責傳入參數。
好吶,本期我們來詳細學習函數幾種參數類型,大綱如下:
python函數的參數名是無意義的,Python允許在調用函數時通過通過名字來傳入參數值。
位置參數:按照形參位置傳入的參數
調用函數時,實參默認按位置順序傳遞的。同時實參個數也要和形參匹配
舉一個小栗子
如果實參的個數與形參不匹配時,調用函數運行就會報錯
Python中,形參與調用函數緊密聯系在一起的。
關鍵字參數:調用函數時,使形參名稱來傳遞參數,形式為“形參名=實參”
關鍵字參數,又叫命名參數,傳遞時無需考慮參數位置和順序
舉一個小栗子
默認參數:定義函數時,我們可以為形參提前設置具體的值。
在定義函數時,默認參數要放到位置等其他參數后面
在調用函數時,默認參數是可選的。如果傳入新值,則會覆蓋默認值
舉一個小栗子
注意,默認值不能位于位置參數前面,否則程序會報錯誤
不定長參數又名可變參數。
不定長參數指的是可變數量的參數,分兩種情況:
如果不定長參數后面,可以新增參數嗎?
我們通過例子來看,會發生什么?
運行上面的程序,Python解釋器會報錯
原因是,形參a已經是不定長參數,我們調用的test(2,3,4)傳入的三個實參,系統自動把它們屬于形參a的值,形參b 和形參c就等于沒有值傳入,這時候系統就認為,調用函數的對象,參數沒有傳夠。
為了解決這一報錯,python引入了 強制命名參數
規定,調用不定參數后面有跟位置參數的函數時,傳入給位置參數時,必須要強制命名參進行傳參。
逆向參數收集針對的對象傳入函數的實參
調用函數時,如果實參是元組,列表或者字典,通過在實參前面加入星號,可以自動把元素進行隔開,然后再轉入給函數進行處理
舉一個小栗子
本期,我們詳細學習了參數幾種類型,為后面我們學習函數,打好基礎。
實踐是檢驗真理的過程,大家多動手練習練習,會有不一樣的奇妙旅程~
好吶,以上是本期內容,歡迎大佬們評論區指正~
** 在python里面表示冪運算
傳遞實參和定義形參(所謂實參就是調用函數時傳入的參數,形參則是定義函數是定義的參數)的時候,你還可以使用兩個特殊的語法:``*`` ** 。
調用函數時使用* **
test(*args)* 的作用其實就是把序列 args 中的每個元素,當作位置參數傳進去。比如上面這個代碼,如果 args 等于 (1,2,3) ,那么這個代碼就等價于 test(1, 2, 3) 。
test(**kwargs)** 的作用則是把字典 kwargs 變成關鍵字參數傳遞。比如上面這個代碼,如果 kwargs 等于 {'a':1,'b':2,'c':3} ,那這個代碼就等價于 test(a=1,b=2,c=3) 。
定義函數參數時使用* **
def test(*args):
...定義函數參數時 * 的含義又要有所不同,在這里 *args 表示把傳進來的位置參數都裝在元組 args 里面。比如說上面這個函數,調用 test(1, 2, 3) 的話, args 的值就是 (1, 2, 3) 。:
def test(**kwargs):
...類似的, ** 就是針對關鍵字參數和字典的了。 調用 test(a=1,b=2,c=3) 的話, kwargs 的值就是 {'a':1,'b':2,'c':3} 了。
普通的參數定義和傳遞方式和 * 們都可以和平共處,不過顯然 * 必須放在所有位置參數的最后,而 ** 則必須放在所有關鍵字參數的最后,否則就要產生歧義了
形參設置可以為數字字符串變量、元組和字典等任意類型數據,元組形參是在變量名前加*,字典形參是在變量名前加**
例如:fun(var),fun(*tuple),fun(*list),fun(**dict)
實參接受也可以是任意類型數據,當接收數據為元組列表或者字典時,同樣是在數據變量前加*和**
例如:fun(x),fun(*seq),fun(*list),fun(**stu_info)
可以使用元組形參和字典形參接收冗余或意外數據
例如:fun(var,*t_args,**dic_args)
但傳參時,數字和字符串形參必須傳值,元組和字典形參可不傳,原因為元組和字典數據可以是空元組或空字典,此特性正好適應處理冗余數據
形參參數名若和生產數據中字典鍵名相同加大大提高編程效率和生產效率
例如:有字典dic={'name':'csdn','age':10,'top':1} ,有函數fun(name='name',age=0,top=0),則函數可以方便的獲取字典數據fun(**dic)
形參:形式參數,在定義函數時,函數名后面括號中的參數;
實參:實際參數,在調用函數時,函數名后面括號內的參數,也就是將函數的調用者提供給函數的參數成為實際參數。