day9-函數(shù)基礎


一、函數(shù)的基礎知識

1.定義

  • 函數(shù)就是對實現(xiàn)某一功能的代碼段的封裝

2.分類

  • 自定義函數(shù)(程序員自己聲明實現(xiàn)其功能)

  • 內置函數(shù)(系統(tǒng)已經(jīng)聲明實現(xiàn)完成)


二、函數(shù)的聲明

1.語法

  • 字面量:
def 函數(shù)名(參數(shù)列表):
    函數(shù)體
  • 說明:
    • a.def-->python中聲明函數(shù)的關鍵字

    • b.函數(shù)名-->標識符,不能是關鍵字。遵守PEP8命名規(guī)范(所有字母小寫,多個單詞下劃線隔開,見名知意)

    • c.()-->固定格式

    • d.參數(shù)列表-->形參列表:參數(shù)名1,參數(shù)名2...
      可以有多個參數(shù),也可以沒有
      參數(shù)是用來從函數(shù)的外部給函數(shù)里面?zhèn)髦档?/p>

    • e.:-->固定格式

    • f.函數(shù)體:-->就是實現(xiàn)函數(shù)功能的代碼段

  • 附:
    參數(shù)列表中,可以通過'參數(shù)名:類型名'來指定參數(shù)的類型,也可以通過設置默認值來說明參數(shù)的類型
    說明類型的好處:a.傳什么類型的值一目了然 b.實現(xiàn)函數(shù)體的時候,可以有相關提示

2.聲明步驟

  • 步驟:

    • a.確定函數(shù)的功能

    • b.根據(jù)功能確定函數(shù)名

    • c.確定參數(shù):確定有沒有,確定有幾個(看實現(xiàn)函數(shù)的功能需不需要從函數(shù)外面?zhèn)髦?,需要傳幾個)

    • d.實現(xiàn)函數(shù)功能

    • e.確定返回值

  • 例子:



def my_sum(num1,num2):
    print(num1 + num2)
 

def print_star(n):
    print('*'*n)


def my_sum1(n):
    sum1 = 0
    for i in range(n+1):
        sum1 += i
    print(sum1)

三、函數(shù)的調用

1.語法

  • 字面量:
函數(shù)名(實參列表)
  • 說明:
    • a.函數(shù)名-->必須是已經(jīng)聲明過的函數(shù)

    • b.()-->固定格式

    • c.實參列表-->數(shù)據(jù)1,數(shù)據(jù)2...
      用來給形參賦值

  • 例子:
# 寫一個函數(shù),打印兩個數(shù)的和
def yt_sum(num1, num2):
    print(num1 + num2)
yt_sum(10, 20)
yt_sum(100, 200)
#30
#300

# 寫一個函數(shù),打印5個'*'
def print_star():
    print('*'*5)


print_star()
#*****
#**********
#********************

2.調用過程

  • 過程:
    • 第一步:回到函數(shù)聲明的位置

    • 第二步:用實參給形參賦值(傳參: 一定要保證每個參數(shù)都有值)

    • 第三步:執(zhí)行函數(shù)體

    • 第四步:返回返回值

    • 第五步:執(zhí)行完函數(shù)體回到函數(shù)調用的位置,接著之后后面的代碼

  • 例子:
def sum2(num1, num2):
    # num1 = 10, num2 = 20
    print(num1 + num2)


sum2(10, 20)
print('=====')
#30
#====

三、函數(shù)的參數(shù)

1.位置參數(shù)

  • 定義:
    按照實參的順序一一給形參賦值

  • 例子:

def func1(a, b, c):
    print('a:', a, 'b:', b, 'c:', c)

func1(10, 20, 30)
#a: 10 b: 20 c: 30

2.關鍵字參數(shù)

  • 定義:
    形參1=值1, 形參2=值2...

  • 例子:

def func1(a, b, c):
    print('a:', a, 'b:', b, 'c:', c)


func1(c=300, a=200, b=100)
#a: 200 b: 100 c: 300

3.默認參數(shù)

  • 定義:
    函數(shù)聲明的時候可以給參數(shù)設置默認值,但是,有默認值的參數(shù),必須放在參數(shù)列表的最后
    有默認值的參數(shù),在調用的時候可以不用傳參

*例子:

def func2(a, c, b=0):

    print('a:', a, 'b:', b, 'c:', c)


# a=10  c=20
func2(10, 20)
# a=100 c=200 b=300
func2(100, 200, 300)


def func3(a=10, c=30, b=20):

    print('a:', a, 'b:', b, 'c:', c)


func3(a=100, b=200)
func3(100, b=200)
#a: 100 b: 200 c: 30
#a: 100 b: 200 c: 30

4.不定長參數(shù)

  • 類型:
    *參數(shù)名: 將位置參數(shù)作為元祖的元素。參數(shù)就是一個元祖
    **參數(shù)名: 將關鍵字參數(shù),一參數(shù)名為key,實參為值組合成鍵值對,作為字典的元素。參數(shù)是一個字典

  • 注意:經(jīng)常將args和kwargs組合在一起使用,但是使用的時候要放在**的前面!

  • 例子:

def func4(*args):
    print(args)


func4(23, 89, 90)


def func5(**kwargs):
    print(kwargs)


func5(a=12, b=89, c=100, d=34)


def func6(*args, **kwargs):
    print(args, kwargs)


func6(12, 90)
func6(a=10, b=20, c=30)
func6(12, 34, a=10, b=20)
func6(12, a=23, b=30)
(23, 89, 90)
#{'a': 12, 'b': 89, 'c': 100, 'd': 34}
#(12, 90) {}
#() {'a': 10, 'b': 20, 'c': 30}
#(12, 34) {'a': 10, 'b': 20}
#(12,) {'a': 23, 'b': 30}

四、函數(shù)的返回值

1.定義

  • 定義:
    函數(shù)的返回值就是函數(shù)調用表達式的值,就是return關鍵字后面的表達式的值。python中所有的函數(shù)都有返回值,返回值默認是None

  • 說明:
    函數(shù)調用表達式 --> 調用函數(shù)的語句(函數(shù)名(實參))
    return --> 關鍵字,只能寫在函數(shù)體中。用來返回返回值和結束函數(shù)

  • 注意:看一個函數(shù)的返回值,只看有沒有遇到return。只要沒有遇到就是None,遇到return就是return后面的值

2.函數(shù)調用過程

  • 第一步:回到函數(shù)聲明的位置

  • 第二步:用實參給形參賦值(傳參: 一定要保證每個參數(shù)都有值)

  • 第三步:執(zhí)行函數(shù)體

  • 第四步:返回返回值 --> 返回給函數(shù)調用表達式

  • 第五步:執(zhí)行完函數(shù)體回到函數(shù)調用的位置,接著之后后面的代碼

3.有無return

  • 有return:
def func1():
    print('hello python!')
    print('abcc')
    for x in range(10):
        print(x)


# 將返回值賦給一個變量
re = func1()
print(re)

# 直接打印返回值
print(func1())

# 將返回值作為列表的元素
list1 = [func1(), 1]
print(list1)
  • 沒有return:
def func2():
    print('=====')
    print('!!!!!')
    return 100
    print('*****')


re = func2()
print(re)
  • 注意:如果實現(xiàn)函數(shù)的功能會產(chǎn)生新的數(shù)據(jù),就將新的數(shù)據(jù)返回。如果不會產(chǎn)生新的數(shù)據(jù)就不用返回值

作業(yè)


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 平時的我,很少丟垃圾,因為沒在家煮飯,也很少在家??墒牵裉炫既粊G垃圾時發(fā)現(xiàn)垃圾桶生蟲了! 還好,我也沒有覺得很生...
    獅子王的山豬閱讀 480評論 0 0
  • 羽裳_3abb閱讀 106評論 0 0
  • 今天好多孩子們都送給老師平安果,女兒也帶了兩個送老師,她請語文課代表領她去辦公室送給語文老師,數(shù)學老師的還沒等送出...
    李烽熠媽閱讀 79評論 0 0
  • 凌晨兩點上海的夜如此靜謐,女兒躺在我膝蓋上,像是睡了,呼吸均勻,我撫著她溫熱的小臉,想起過去的48小時,像一場夢...
    閆芊閱讀 915評論 2 2

友情鏈接更多精彩內容