日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

【Python基础入门系列】第05天:Python函数

發(fā)布時(shí)間:2023/12/20 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python基础入门系列】第05天:Python函数 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ? ??前面我們寫過九九乘法表,但如果我要七七乘法表或五五乘法表的話,你會(huì)看到三者代碼極其類似,只是循環(huán)變量不同,那么如何做到代碼重用,而不是簡(jiǎn)單拷貝黏貼修改呢,其實(shí)可是使用函數(shù)完成這一功能!

先來試著看一看這個(gè)函數(shù):

def?table(row,col,sep=3):for?i?in?range(1,?row?+?1):for?j?in?range(1,?col?+?1):if?j?<=?i:print("%d*%d = %2d"?%?(i,?j,?i?*?j),?end='%*s'%(sep,' '))print('') #一次編碼,到處運(yùn)行 table(8,8) table(5,5,8)

?

下面就來介紹一下今天的內(nèi)容--》python函數(shù)

?

1.函數(shù)定義

函數(shù)就是完成特定功能的代碼塊,本質(zhì)上是對(duì)代碼的封裝

語法格式:

def?函數(shù)名([參數(shù)1],[參數(shù)2]....[參數(shù)n]): 函數(shù)體
  • 函數(shù)名命名規(guī)則同變量名,要滿足標(biāo)識(shí)符命名規(guī)則

  • 不能和系統(tǒng)函數(shù)重名,否則系統(tǒng)函數(shù)無法使用

  • 函數(shù)定義分兩部分函數(shù)頭和函數(shù)體

  • 函數(shù)體,就是實(shí)現(xiàn)功能的代碼段,以:開頭,必須縮進(jìn)

  • 函數(shù)名的命名風(fēng)格:一般建議用下劃線分隔的小寫單詞組成:say_hello

    ?

函數(shù)的優(yōu)點(diǎn):

  • 代碼可復(fù)用

  • 代碼可維護(hù)性高

  • 容易排錯(cuò)

  • 可讀性好

  • 利于團(tuán)隊(duì)開發(fā)

?

?

2 函數(shù)參數(shù)

2.1 實(shí)參和形參

  • 形參:就是函數(shù)定義時(shí)小括號(hào)里的變量

  • 實(shí)參:函數(shù)調(diào)用的時(shí)候,小括號(hào)里的表達(dá)式

  • 函數(shù)可以沒有形參和實(shí)參

2.2 參數(shù)分類

  • 位置參數(shù),要求實(shí)參順序必須和形參順序完全一致,由形參順序決定實(shí)參順序

    def say_hello(name,age,home):print('大家好,我是{},我今年{}歲了,我來自{}'.format(name,age,home))say_hello('王二妮',18,'湖北武漢') #實(shí)參個(gè)數(shù)、順序必須和形參一致

    ?

  • 關(guān)鍵字參數(shù),函數(shù)調(diào)用時(shí),實(shí)參可以是鍵值對(duì),鍵就是形參名字,這樣的調(diào)用,實(shí)參不必關(guān)心形參的順序。

    def say_hello(name,age,home):print('大家好,我是{},我今年{}歲了,我來自{}'.format(name,age,home))say_hello(name='王二傻',home='大連',age=20) #三個(gè)關(guān)鍵字參數(shù) say_hello('大傻',home='美國(guó)',age=30) #兩個(gè)關(guān)鍵字參數(shù) sya_hello('二傻',24,home='何方') ? #一個(gè)關(guān)鍵字參數(shù)

    ?

  • 默認(rèn)值,如果形參在定義的時(shí)候給定一個(gè)值,那么函數(shù)在調(diào)用時(shí)就可以不傳實(shí)參,可以簡(jiǎn)化調(diào)用

    def my_power(x,n=2):return (x) ** n my_power(3) my_power(4,0.5)def test(a=[]):a.append('end')print(a) test([1,2,3]) test() ? #['end'] test() ? #['end','end']
    • 默認(rèn)值參數(shù)必須放到最右邊

    • 如果傳了實(shí)參,那么實(shí)參優(yōu)先,不會(huì)使用默認(rèn)值

    • 默認(rèn)值只計(jì)算一次

    • 默認(rèn)值必須是不可變對(duì)象

  • 可變參數(shù),傳入的參數(shù)個(gè)數(shù)是可變的,可以是1個(gè)、2個(gè)到任意個(gè),還可以是0個(gè)。

    #使用*接收任意數(shù)量的位置參數(shù) #注意:*的不定長(zhǎng)參數(shù)被當(dāng)做元組處理 def demo(a,b,*args):print(a,b,args)demo(12,33,90) demo(1,2,3,4,5) a=(1,2,3) demo(*a)#使用**接收任意數(shù)量的關(guān)鍵字參數(shù) #注意:**的不定長(zhǎng)參數(shù)被當(dāng)做字典處理 def demo1(a,**args):print(a,args) demo1(1,name='kk',age=3) b = {'a':20,'b':12,'c':32} demo(**b)

    ?

2.3 參數(shù)組合

  • 形參順序須按照以下順序:位置參數(shù)、默認(rèn)值參數(shù)、*args,**kwargs

3 函數(shù)調(diào)用

  • 函數(shù)調(diào)用必須在函數(shù)定義之后

  • 函數(shù)調(diào)用必須能夠正確傳遞實(shí)參

    def demo(a,b,c=0,*arg1,**arg2):print(a,b,c,arg1,arg2) demo(1,3,k=4) demo(1,2,3,4,5) demo(1,b=3,c=3,d=5) demo(*(1,2,3),**{'name':12}) #任何函數(shù)都可通過這種形式傳遞參數(shù)

    ?

4 返回值

可以通過return語句返回計(jì)算結(jié)果。

  • return的作用一個(gè)是終止函數(shù)的執(zhí)行,所有執(zhí)行了return后,其后的語句不會(huì)被執(zhí)行

  • 如果沒有return語句,則默認(rèn)返回的是None

  • return還可以返回給調(diào)用者數(shù)值

  • return可以返回一個(gè)值,如果要返回多個(gè)值,那么返回的是一個(gè)元組

    ?

    語法:

    def demo2():return 1 def demo3():return 1,2,3 print(demo2()) print(demo3()) #(1,2,3)

    ?

5 文檔字符串

函數(shù)文檔字符串documentation string (docstring)是在函數(shù)開頭,用來解釋其接口的字符串。簡(jiǎn)而言之:幫助文檔

  • 包含函數(shù)的基礎(chǔ)信息

  • 包含函數(shù)的功能簡(jiǎn)介

  • 包含每個(gè)形參的類型,使用等信息

文檔字符串書寫規(guī)則:

  • 必須在函數(shù)的首行

  • 使用三引號(hào)注解的多行字符串(''' ''') 或(""" """)

  • 函數(shù)文檔的第一行一般概述函數(shù)的主要功能,第二行空,第三行詳細(xì)描述。

    def?test():"""函數(shù)名:test功能:測(cè)試參數(shù):無返回值:無"""print("函數(shù)輸出成功")#使用__doc__屬性查看文檔字符串 print(test.__doc__)

    ?

6.參數(shù)傳遞

python的參數(shù)傳遞是簡(jiǎn)單的值傳遞,當(dāng)然這里的值是指變量的引用(地址),不是變量的值。不存在值傳遞和引用傳遞的區(qū)分。簡(jiǎn)而言之,python的參數(shù)傳遞可以稱之為對(duì)象引用傳遞,對(duì)象可以分為:

  • 不可變對(duì)象:int、float、None、complex、bool、tuple、str,range

    • 在函數(shù)內(nèi)部不可能修改函數(shù)外部的變量

  • 可變對(duì)象: dict、list

    • 可以在函數(shù)內(nèi)部修改

7 空函數(shù)

借助于pass語句實(shí)現(xiàn),函數(shù)體不完成任何功能,只有一個(gè)pass語句

def test():pass

8 匿名函數(shù)

不再使用def 函數(shù)名()這種形式定義函數(shù),而是使用lambda來創(chuàng)建匿名函數(shù)

特點(diǎn):

  • lambda只是一個(gè)表達(dá)式,函數(shù)體比def簡(jiǎn)單的多

  • lambda的函數(shù)體不再是代碼塊

  • lambda只有一行,增加運(yùn)行效率

語法:lambda [arg1,arg2....argn]:函數(shù)體 add = lambda a,b:a + b print(add(3,5))

9.函數(shù)類型

函數(shù)也是一種類型,我們自定義的函數(shù)就是函數(shù)對(duì)象,函數(shù)名保存了函數(shù)對(duì)象的引用(地址)

def test():print('我是測(cè)試函數(shù)')print(test) #函數(shù)名是變量,指向了函數(shù)對(duì)象 pf = test ? #pf變量也指向了函數(shù)對(duì)象,所以也可以通過pf調(diào)用test函數(shù) pf()

10.傳入函數(shù)

一個(gè)函數(shù)就可以接收另一個(gè)函數(shù)作為參數(shù),這種函數(shù)就稱之為高階函數(shù),也可以稱之為傳入函數(shù)。可以實(shí)現(xiàn)通用編程,排序等復(fù)雜功能

?

總結(jié)

本節(jié)給大家介紹了 Python ?函數(shù)的使用,對(duì)于初步了解的同學(xué)可能不大友好,還需要自己把不明白的地方多看多查資料深入了解。

參考:

https://www.runoob.com/python/python-functions.html
https://www.liaoxuefeng.com/wiki/1016959663602400/1017105145133280

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的【Python基础入门系列】第05天:Python函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。