06-Python之路-進階-函數(shù)進階

函數(shù)和返回值

作用

  • 函數(shù)根據(jù)有沒有參數(shù)以及有沒有返回值,可以相互組合,一個四種組合形式:(無參數(shù)、無返回值),(有參數(shù)、有返回值),(有參數(shù)、無返回值),(有參數(shù)、有返回值)
  • 定義函數(shù)時,是否接收參數(shù),或者是否返回結(jié)果,是根據(jù)實際功能需求決定的
  • 如果函數(shù)內(nèi)部處理的數(shù)據(jù)不確定,可以接收外部數(shù)據(jù)以參數(shù)形式傳遞到函數(shù)內(nèi)部
  • 如果希望一個函數(shù)執(zhí)行完,向外界發(fā)送結(jié)果,可以增加返回值

不可變和可變參數(shù)

  • 無論傳遞的參數(shù)是可變還是不可變只要針對參數(shù)使用賦值語句,會在函數(shù)內(nèi)部修改局部變量的引用,不會影響到外部變量的引用。如果傳遞的參數(shù)是可變類型,在函數(shù)內(nèi)部,使用方法修改了數(shù)據(jù)的內(nèi)容,同樣會影響到外部數(shù)據(jù)

缺省參數(shù)

  • 定義函數(shù)時,可以給某個參數(shù)指定一個默認值,具有默認值的參數(shù)就叫做缺省參數(shù),調(diào)用函數(shù)時,如果沒有傳入缺省參數(shù)的值,則在函數(shù)內(nèi)部使用定義函數(shù)時指定參數(shù)的默認值。將常用的參數(shù)設置缺省值,從而簡化函數(shù)的調(diào)用

注意事項

定義

  • 必須保證帶有默認值的缺省參數(shù)在參數(shù)列表末尾

調(diào)用帶有多個缺省參數(shù)的函數(shù)

  • 在調(diào)用函數(shù)時,如果有多個缺省參數(shù),就需要指定參數(shù)名

多值參數(shù)

定義

  • 一個函數(shù)能夠處理的參數(shù)個數(shù)是不確定的,這時候就可以使用多值參數(shù)

多值參數(shù)

  • 參數(shù)名前增加一個*可以接受元組
  • 參數(shù)名前增加兩個*可以接受字典

多值參數(shù)習慣名字

  • *args存放元組參數(shù),
  • **kwargs存放字典參數(shù)
  • args是arguments縮寫,有變量的含義,kw是keyword的縮寫,kwargs可以記憶鍵值對參數(shù)

字典和元組的拆包

  • 在調(diào)用帶有多值參數(shù)的函數(shù)時,如果希望將一個元組變量,直接傳遞給args將一個字典變量,直接傳遞給kwargs就可以使用拆包,簡化參數(shù)的傳遞。
  • 拆包方式是:在元組變量前,增加一個*在。字典變量前,增加兩個*。

遞歸

  • 函數(shù)調(diào)用自身的編程技巧稱之為遞歸
  • 一個函數(shù)內(nèi)部調(diào)用自己。函數(shù)內(nèi)部可以調(diào)用其他函數(shù),也可以在函數(shù)內(nèi)部調(diào)用自己

代碼特點

  • 函數(shù)內(nèi)部的代碼是相同的,只是針對參數(shù)不同,處理結(jié)果不同
  • 當參數(shù)滿足一個條件時,函數(shù)不再執(zhí)行

內(nèi)置函數(shù)(Python 3.10.4)

  • abs(x):返回一個數(shù)的絕對值。參數(shù)可以是整數(shù)、浮點數(shù)或任何實現(xiàn)了abs()的對象。如果參數(shù)是一個復數(shù),則返回它的摸
  • aiter(async_iterable):返回asynchronous的asynchronous iterator。相當于調(diào)用x.__aiter__()
  • all(iterable):如果iterable的所有元素均為真值(或可迭代對象為空),則返回True
  • any(iterable):如果iterable的任意元素為真值,則返回True。如果可迭代對象為空,則返回False
  • ascii(object):與repr()類似,返回一個字符串表示對象的可打印形式,但在repr()返回的字符串中,非ASCII字符會用\X、\u、\U進行轉(zhuǎn)義
  • bin(x):將整數(shù)變?yōu)橐?0b"前最的二進制字符串,如果不是int對象,必須定義index()方法
  • class bool([x]):返回布爾值,True或者Flash
  • breakpoint(*args,**kws):該函數(shù)會在調(diào)用時將你陷入調(diào)試器中
  • class bytearray([source[,encoding[,errors]]]):返回一個新的bytes數(shù)組。bytearray類是一個可變序列,包含范圍為0 <= x < 256 的整數(shù)
  • class bytes([source[,encoding[,errors]]]):返回一個新的bytes對象,這是一個不可變序列,包含范圍0 <= x < 256的整數(shù)
  • callable(object):如果參數(shù)object是可調(diào)用的就返回True,否則返回False。
  • chr(i):返回Ubicode碼位為整數(shù)i的字符的字符串格式
  • @classmethod:把一個方法封裝成類方法
  • compile(source,filename,mode,flags=0,dont_inherit=False,optimize=-1):將source編譯成代碼或AST對象,filename實參需要是代碼讀取的文件名,mode實參指定了編譯代碼必須用的模式,可選參數(shù)flags和dont_inherit控制應激活哪個funture特性,optimize實參指定編譯器的優(yōu)化級別,默認值-1選擇與解釋器的-0選項相同的優(yōu)化級別
  • class complex([real[,imag]]):返回值為real+imag*1j的復數(shù),或?qū)⒆址驍?shù)字轉(zhuǎn)換為復數(shù)
  • delattr(object,name):setattr()相關的函數(shù)。實參是一個對象和一個字符串
  • class dict(**kwarg):創(chuàng)建一個新的字典,dict對象是一個字典類
  • dir([object]):如果沒有實參,則返回當前本地作用域中的名稱列表。如果有實參,它會嘗試返回該對象的有效屬性列表
  • divmod(a,b):以兩個(非復數(shù))數(shù)字為參數(shù),在做整數(shù)除法時,返回商和余數(shù)
  • enumerate(iterable,start=0):返回一個枚舉對象。iterable必須是一個序列,或iterator,或其他支持迭代的對象
  • eval(expression[,globals[,locals]]):實參是一個字符串,以及可選的globals和locals.globals實參必須是一個字典。locals可以是任何映射對象
  • exec(object[,global[,locals]]):如果省略了可選部分,代碼將運行于當前作用域中。如果只提供globals,則必須為字典對象(而不能是字典的子類),同時用于存放全局和局部變量。如果提供globals和locals,則將分別用于全局變量和局部變量。locals可以是任意字典映射對象
  • filter(function,iterable):用iterable中函數(shù)function返回元素,構(gòu)建一個新的迭代器
  • class float([x]):返回從數(shù)字或字符串x生成的浮點數(shù)
  • format(value[,format_spec]):將value轉(zhuǎn)換為格式化后的形式,格式由format_spec進行控制
  • class frozenset([iterable]):返回一個新的frozenset對象,它包含可選參數(shù)iterable中的元素
  • getattr(object,name[,default]):返回對象命名屬性的值。name必須是字符串如果該字符串是對象的屬性之一,則返回該屬性的值
  • globals():返回實現(xiàn)當前命名空間的字典
  • hasattr(object,name):該實參是一個對象和一個字符串。如果字符串是對象的屬性之一的名稱,則返回True,否則返回False
  • hash(object):返回該對象的哈希值(如果存在)。哈希值是整數(shù)。它們在字典查找元素時用來快速比較字典的鍵
  • help([object]):啟動內(nèi)置的幫助系統(tǒng)(此函數(shù)主要在交互式使用)
  • hex(x):將整數(shù)轉(zhuǎn)換為以“0x”為前綴的小寫十六進制字符串。如果不是int對象,則必須定義返回整數(shù)的index()方法
  • id(object):返回對象的“標識值”。該值是一個整數(shù),在此對象的生命周期中保證是唯一且恒定的。兩個生命周期不重疊的對象可能具備相同的id()值
  • input([prompt]):如果存在prompt實參,則將其寫入標準輸出,末尾不帶換行符
  • class int([x,base=10]):返回一個基于數(shù)字或字符串x構(gòu)造的整數(shù)對象,或者在未給出參數(shù)時返回0
  • isinstance(object,classinfo):如果object參數(shù)是classinfo參數(shù)的實例,或其(直接、間接或virtual)子類的實例,則返回True.如果object不是給定類型的對象,則返回False
  • issubclass(class,classinfo):如果class是classinfo的子類,則返回True
  • iter(object[,sentinel]):返回一個迭代器對象
  • len(s):返回對象的長度(元素個數(shù))
  • class list([iterable]):list是一種可變序列類型
  • locals():更新并返回表示當前本地符號表的字典
  • map(function,iterable,...):返回一個將function應用于iterable中每一項并輸出其結(jié)果的迭代器
  • max(iterable,*[,key,default]):返回可迭代對象中最大的元素,或者返回兩個及以上實參中最大的
  • min(iterable,*[,key,default]):返回可迭代對象中最小的元素,或者返回兩個及以上實參最小的
  • next(iterator[,default]):通過調(diào)用其next()方法從迭代器中檢索下一項
  • class object():返回一個不帶特征的新對象。ibject是所有類的基類
  • oct(x):將一個整數(shù)轉(zhuǎn)變成一個前綴為“0o”的八進制字符串
  • open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,closefd=True,opener=None):打開file并返回對應的file object
  • ord(c):對表示單個Unicode字符的字符串,返回代表它 Unicode碼點的整數(shù)
  • pow(base,exp[,mod]):返回base的exp次冪,如果mod存在,則返回base的exp次冪對mod取余
  • print(*objects,sep=' ',end='\n',file=sys.stdout,flush=False):將object打印輸出至file指定的文本流
  • class property(fget=None,fset=None,fdel=None,doc=None):返回property的屬性。fget是獲取屬性值的函數(shù)。fset是用于設置屬性值的函數(shù)。fdel是用于刪除屬性值的函數(shù)。并且doc為屬性對象創(chuàng)建文檔字符串
  • class range(start,stop[,step]):range是一個不可變的序列類型
  • repr(object):返回對象可打印形式的字符串
  • reversed(seq):返回一個反向的iterator
  • round(number[,ndigits]):返回number舍入到小數(shù)點后ndigits為精度的值
  • class set([iterable]):返回一個新的set對象,可以選擇帶有從iterable獲取的元素
  • setattr(object,name,value):函數(shù)與getattr()相對應。其參數(shù)為一個對象、一個字符串和一個任意值
  • class slice(start,stop[,step]):返回一個slice對象,代表由range(start,stop,step)指定索引值的切片。其中參數(shù)start和step默認值為None
  • sorted(oterable,/,*,key=None,reverse=False):根據(jù)iterable中的項返回一個新的已排序列表
  • @staticmethod:將方法轉(zhuǎn)換為靜態(tài)方法
  • class str(object=b' ',ending='utf-8',errors='strict'):返回一個字符串
  • sum(iterable,/,start=0):從start開始自左向右對iterable的項求和并返回總計值。iterable的項通常為數(shù)字,而start值則不允許為字符串
  • class **super([type[,object-or-type]]):返回一個代理對象,它會將方法調(diào)用委托給type的父類或兄弟類
  • class tuple([iterable]):tuple是一個不可變的序列類型
  • class type(name,bases,dict,**kwds):傳入一個參數(shù)時,返回object的類型。返回值是一個type對象,通常與object.class所返回的對象相同
  • vars([object]):返回模塊、類、實例或任何其他具有dict對象的屬性
  • zip(*iterables,strict=False):在多個迭代器上并行迭代,從每個迭代器返回一個數(shù)據(jù)項組成的元組
  • import(name,globals=None,locals=None,fromlist=(),level=0):此函數(shù)由import發(fā)起調(diào)用。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容