python-day7函數(shù)

1函數(shù)

1.函數(shù):就是對(duì)實(shí)現(xiàn)某一特定功能的代碼塊的封裝

2.作用:封裝(將功能綁定在一個(gè)函數(shù)中,想要使用這個(gè)功能的時(shí)候,直接調(diào)用函數(shù))

3.怎么聲明函數(shù):

def 函數(shù)名(參數(shù)列表):
'''函數(shù)說(shuō)明'''
函數(shù)體

  • def:是Python中聲明函數(shù)的關(guān)鍵字
  • 函數(shù)名:標(biāo)識(shí)符。 PEP8的命名格式。見(jiàn)名知義(看到函數(shù)名大概知道函數(shù)的功能)
  • 函數(shù)說(shuō)明:對(duì)函數(shù)的功能和參數(shù)以及返回值進(jìn)行說(shuō)明
  • ():是固定格式
  • 參數(shù)列表:(形參列表) 參數(shù)名1,參數(shù)名2,參數(shù)名3...。
    參數(shù)的功能是用來(lái)接收從函數(shù)外部傳到函數(shù)內(nèi)部的數(shù)據(jù)
  • 函數(shù)體:實(shí)現(xiàn)函數(shù)功能的代碼塊,可能會(huì)包含一個(gè)return語(yǔ)句

初學(xué)者聲明函數(shù)的步驟:

a.確定函數(shù)的功能
b.根據(jù)功能確定函數(shù)名
c.確定參數(shù):

  • 確定需不需要參數(shù)
  • 確定需要幾個(gè)參數(shù)
  • 看實(shí)現(xiàn)函數(shù)的功能需不需要從外面?zhèn)鲾?shù)據(jù)到函數(shù)里面
    d.實(shí)現(xiàn)函數(shù)的功能
    e.確定返回值

5函數(shù)的調(diào)用

函數(shù)名(實(shí)參列表)

  • 函數(shù)名:調(diào)用的函數(shù)一定是已經(jīng)聲明過(guò)的,想要使用什么功能就調(diào)用對(duì)應(yīng)的函數(shù)
  • 實(shí)參列表:實(shí)參是用來(lái)給形參賦值的

函數(shù)的調(diào)用過(guò)程:

1.回到函數(shù)聲明的地方
2.使用實(shí)參給形參賦值
3.執(zhí)行函數(shù)體
4.函數(shù)體執(zhí)行完成后,回到函數(shù)調(diào)用的位置

注意:

1.函數(shù)只有在調(diào)用的時(shí)候才會(huì)執(zhí)行
2.函數(shù)調(diào)用的時(shí)候一定要保證每個(gè)形參都有值
3.一個(gè)函數(shù)可以調(diào)用多次

小練習(xí):寫(xiě)一個(gè)函數(shù)計(jì)算兩個(gè)數(shù)的和

def my_sum(number1, number2):
    """
    (這兒寫(xiě)函數(shù)的功能描述)求兩個(gè)數(shù)的和
    :param number1: 提供第一個(gè)數(shù),int類型
    :param number2: 提供第二個(gè)數(shù),int類型
    :return: 對(duì)返回值進(jìn)行說(shuō)明
    """
    # my_sum = number1 + number2
    print(number1 + number2)

# 函數(shù)的調(diào)用一定是在函數(shù)的聲明后
my_sum(99, 1)
結(jié)果:
100

小練習(xí)2:聲明一個(gè)函數(shù),功能是打印10個(gè)*

# 調(diào)用這個(gè)函數(shù)

def print_star():

    print('*' * 10)
print_star()
print_star()
print_star()
結(jié)果:
**********
**********
**********

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

參數(shù)的作用:從函數(shù)的外面給函數(shù)傳值

1.位置參數(shù)

傳參的時(shí)候,實(shí)參按順序給形參賦值

def func1(a, b, c):
    print(a, b, c)
func1(10, 20,30)
結(jié)果:
10 20 30

2.關(guān)鍵字參數(shù)

調(diào)用函數(shù)的時(shí)候:函數(shù)名(參數(shù)=值)

def func1(a, b, c):
    print(a, b, c)
func1(b=20, a=10, c=30)
結(jié)果:
10 20 30

說(shuō)明:位置參數(shù)和關(guān)鍵字參數(shù)可以混著來(lái)

3.參數(shù)的默認(rèn)值

python中函數(shù)聲明的時(shí)候參數(shù)可以設(shè)置默認(rèn)值,有默認(rèn)值的參數(shù)必須放在參數(shù)列表后邊!??!
調(diào)用參數(shù)有默認(rèn)值的函數(shù),有默認(rèn)值的參數(shù)可以傳參也可以不傳參

def func2(a, b=10, c=100):
    print(a, b, c)

func2(10, 20, 30)
func2(10)
結(jié)果:
10 20 30
10 20 30
10 10 100

4.參數(shù)個(gè)數(shù)不定

參數(shù)個(gè)數(shù)不確定的時(shí)候,就在聲明函數(shù)的時(shí)候,形參的前面加一個(gè)*號(hào),將形參變成元祖
調(diào)用函數(shù)的時(shí)候,這個(gè)參數(shù)會(huì)將對(duì)應(yīng)的實(shí)參作為元祖的元素保存起來(lái)

寫(xiě)一個(gè)函數(shù),求多個(gè)數(shù)的和

def my_sum(*numbers):
    print(numbers)
    sum1 = 0
    for item in numbers:
        sum1 += item
    print(sum1)

my_sum(10, 20, 30)
結(jié)果:
60

注意:參數(shù)個(gè)數(shù)不定,可以是形參中的一部分是不定的
個(gè)數(shù)不確定的參數(shù)要放到參數(shù)的最后

def func1(char, *numbers):
    print(char, numbers)

func1('a', 10, 20, 39)

# 參數(shù)個(gè)數(shù)不定,也可以不傳參,對(duì)應(yīng)的參數(shù)的值就是一個(gè)空的元祖
func1('a')
結(jié)果:
a (10, 20, 39)
a ()

習(xí)題

  1. 編寫(xiě)?個(gè)函數(shù),求1+2+3+...+N
def my_sum1(number):
    sum1 = 0
    for item in range(number):
        item += 1
        sum1 += item
    print(sum1)
my_sum1(5)
結(jié)果:
15
  1. 編寫(xiě)?個(gè)函數(shù),求多個(gè)數(shù)中的最?值
def max_num1(*numbers):
    # print(numbers)
    max1 = numbers[0]
    for item in numbers:
        if item > max1:
            max1 = item
    print(max1)
max_num1(10,50,66,-1,-99)
結(jié)果:
66

3.編寫(xiě)?個(gè)函數(shù),實(shí)現(xiàn)搖?子的功能,打印n個(gè)?子的點(diǎn)數(shù)和

def points(a):
    import random
    sum = 0
    for sum1 in range(a):
        number = random.randint(1, 6)
        print('點(diǎn)數(shù)為:', number)
        sum += number
    print(sum)
points(5)
結(jié)果:
點(diǎn)數(shù)為: 6
點(diǎn)數(shù)為: 1
點(diǎn)數(shù)為: 1
點(diǎn)數(shù)為: 3
點(diǎn)數(shù)為: 1
12

4.編寫(xiě)?個(gè)函數(shù),交換指定字典的key和value。 例如:{'a':1, 'b':2, 'c':3} ---> {1:'a', 2:'b', 3:'c'}

def change(dict1):
    dict2 = {}
    for key, value in dict1.items():
        dict2[value] = key
    print(dict2)
change({'a':1, 'b':2, 'c':3})
結(jié)果:
{1: 'a', 2: 'b', 3: 'c'}

5.編寫(xiě)一個(gè)函數(shù),三個(gè)數(shù)中的最大值

def max_num1(a, b, c):
    # print(numbers)
    list = [a, b, c]
    max1 = list[0]
    for item in list:
        if item > max1:
            max1 = item
    print(max1)
max_num1(10,50,66)
結(jié)果:
66

6 編寫(xiě)?個(gè)函數(shù),提取指定字符串中的所有的字母,

def print_letters(str1):
    str2 = ''
    for x in str1:
        if 'a' <= x <= 'z' or 'A' <= x <= 'Z':
            str2 += x
    print(str2)
print_letters('12a&bc12d--')
結(jié)果:
abcd

7.寫(xiě)?個(gè)函數(shù),求多個(gè)數(shù)的平均值

def avg(*numbers):

    sum1 = 0
    for i in numbers:

        sum1 += i
    print(sum1 / len(numbers))
avg(10,20,30)
結(jié)果:
20.0

8.寫(xiě)?個(gè)函數(shù),默認(rèn)求10的階層,也可以求其他數(shù)的階層

def layer(number):
    product = 1
    for x in range(number):
        if x > 0:
            product *= x
    print(product)
layer(10)
結(jié)果:
362880

9.寫(xiě)一個(gè)函數(shù),可以對(duì)多個(gè)數(shù)進(jìn)?不同的運(yùn)算
例如: operation('+', 1, 2, 3) ---> 求 1+2+3的結(jié)果
operation('-', 10, 9) ---> 求 10-9的結(jié)果
operation('', 2, 4, 8, 10) ---> 求 24810的結(jié)構(gòu)

def operation(str, *numbers):
    if str == '+':
        sum1 = 0
        for i in numbers:
            sum1 += i
        print(sum1)
    elif str == '-':
        for i in numbers:
            sum1 = numbers[0]-numbers[1]
        print(sum1)
    elif str == '*':
        sum1 = 1
        for i in numbers:
            sum1 *= i
        print(sum1)
operation('-', 10, 9)
結(jié)果:
1
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 〇、前言 本文共108張圖,流量黨請(qǐng)慎重! 歷時(shí)1個(gè)半月,我把自己學(xué)習(xí)Python基礎(chǔ)知識(shí)的框架詳細(xì)梳理了一遍。 ...
    Raxxie閱讀 19,602評(píng)論 17 410
  • 一、快捷鍵 ctr+b 執(zhí)行ctr+/ 單行注釋ctr+c ...
    o_8319閱讀 6,046評(píng)論 2 16
  • 函數(shù)和對(duì)象 1、函數(shù) 1.1 函數(shù)概述 函數(shù)對(duì)于任何一門(mén)語(yǔ)言來(lái)說(shuō)都是核心的概念。通過(guò)函數(shù)可以封裝任意多條語(yǔ)句,而且...
    道無(wú)虛閱讀 4,963評(píng)論 0 5
  • 很久沒(méi)有與一個(gè)男生聊天這么開(kāi)心了吧,希望這次有戲吧,講真我也挺期待的,都想減肥了(HAhhhha)現(xiàn)在的狀態(tài)有種“...
    清風(fēng)徐來(lái)_閱讀 171評(píng)論 0 0
  • 大家好,我是IT修真院成都分院第7期的學(xué)員韓建名,一枚正直純潔善良的WEB前端程序員。 1.背景介紹 是Javas...
    inh_閱讀 644評(píng)論 0 1

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