python 默認參數(shù)相關(guān)知識詳解
最常見的一種形式是的是為一個或者多個參數(shù)指定默認值,這會創(chuàng)建一個可以使用比定義時允許的參數(shù)更少的參數(shù)調(diào)用的函數(shù),
def ask_ok(prompt, retries=4, reminder='Please try again!'): while True: ok = input(prompt) if ok in ('y', 'ye', 'yes'): return True if ok in ('n', 'no', 'nop', 'nope'): return False retries = retries - 1 if retries < 0: raise ValueError('invalid user response') print(reminder)
可以用以下三種調(diào)用方式:
- ask_ok('Do you really want to quit?')
- ask_ok('OK to overwrite the file?', 2)
- ask_ok('OK to overwrite the file?', 2, 'Come on, only yes or no!')
默認值在函數(shù)定義作用域有效,因此:
i = 5 def f(arg=i): print(arg) i = 6 f()
打印為5
重要提醒:默認參數(shù)在定義時賦值,且僅僅賦值一次,當函數(shù)多次被調(diào)用,且并沒有提供默認的參數(shù)值,就會從定義時賦值的地方取得值。即使函數(shù)中給默認參數(shù)重新賦值了,下次調(diào)用還是會從定義賦值的地方取得值!當默認參數(shù)為可變類型的list/dict等類型時,需要注意。
def f(a, L=[]): L.append(a) return L print(f(1)) print(f(2,[])) print(f(3))
輸出為:
[1] [2] [1,3]
如果不想讓默認值咋后續(xù)調(diào)用中累積,可以用如下寫法:
def f(a, L=None): if L is None: L = [] L.append(a) return L
首先要理解可變對象與不可變對象可以參考http://blog.csdn.net/u014265088/article/details/52756442這篇文章
假如默認參數(shù)是可變對象,函數(shù)內(nèi)對參數(shù)的改變會影響原始對象,下次調(diào)用函數(shù)默認參數(shù)已經(jīng)被更改
假如默認參數(shù)是不可變對象,函數(shù)內(nèi)對參數(shù)賦值時,參數(shù)會引用內(nèi)存其他地方,下次調(diào)用函數(shù)時還是會從定義時賦值的地方取值。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Django提示mysql版本過低:django.db.utils.NotSupportedError: My
這篇文章主要介紹了Django提示mysql版本過低:django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.26).的解決方法,文中有詳細的解決方案,具有一定的參考價值,需要的朋友可以參考下2024-03-03python連接、操作mongodb數(shù)據(jù)庫的方法實例詳解
這篇文章主要介紹了python連接、操作mongodb數(shù)據(jù)庫的方法,結(jié)合實例形式詳細分析了Python針對MongoDB數(shù)據(jù)庫的連接、查詢、排序等相關(guān)操作技巧,需要的朋友可以參考下2019-09-09使用Python+OpenCV進行卡類型及16位卡號數(shù)字的OCR功能
本文將使用Python+OpenCV實現(xiàn)模板匹配算法,以自動識別卡的類型和以及16位卡號數(shù)字,通過實例代碼給大家介紹的非常詳細,需要的朋友參考下吧2021-08-08python 輸入一個數(shù)n,求n個數(shù)求乘或求和的實例
今天小編就為大家分享一篇python 輸入一個數(shù)n,求n個數(shù)求乘或求和的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11Python大數(shù)據(jù)量文本文件高效解析方案代碼實現(xiàn)全過程
在數(shù)據(jù)分析中,有時數(shù)據(jù)源會是超大的文本文件(幾G,或在幾十G),需要從中提取需要的信息,下面這篇文章主要給大家介紹了關(guān)于Python大數(shù)據(jù)量文本文件高效解析方案代碼實現(xiàn)的相關(guān)資料,需要的朋友可以參考下2022-12-12