ParisGabriel:Python全棧工程師(0基礎到精通)教程 第十四課(函數的傳參)

來源:互聯網
上載者:User

標籤:lease   linu   --   是什麼   依次   強制   調用函數   ati   print   

 ParisGabriel 感謝 大家的支援                                                              



                 每天堅持 一天一篇 點個訂閱吧  灰常感謝    當個死粉也闊以

 

                      Python人工智慧從入門到精通

 

“\n”Linux 分行符號
"\r\n" Windows分行符號

 


函數的參數傳遞:
   傳參方式:(2種)
    位置傳參(內含項目關聯性 )
      序列傳參
    關鍵字傳參(內含項目關聯性)
      字典關鍵字傳參
位置傳參:
    實際參數(實參)的對應關係與形式參數(形參) 的對應關係是安位置來依次對應的
    說明:
      實參和形參通過位置進行傳遞和匹配
      實參的個數必須與形參的個數相同
序列傳參:
    序列傳參是指在函數調用過程中,用 * 將序列拆解 後按照位置進行傳遞的方式
    說明:
      序列傳參時,序列拆解的位置與形參一一對應
      序列的位置資訊對應相應的形參的位置
關鍵字傳參:
    關鍵字傳參是指傳參時,按著形參的名稱給形參賦值、實參和形參按形參名進行匹配
字典關鍵字傳參:
    是指字典,將字典用“**”拆解後再進行關鍵字傳參的方式
    說明:
      字典的鍵名必須和形參名一致
      字典的鍵名必須是字串且標識符
      字典額鍵名要在形參中存在
綜合傳參:
    函數的傳參方式在能確定形參能唯一匹配到相應實參的情況下可以任意組合
  說明:
    位置傳參(序列傳參)一定要在關鍵字傳參(字典關鍵字傳參)的左側

  樣本:

def fu(a, b, c):    print("a=", a)    print("b=", b)    print("c=", c)fu(100, *[200, 300])fu(*[100, 200], 300)fu(100, 200, 300)fu(100, b=200, c=300)fu(100, **{"c": 200, "b": 300})

 

--------------------函數的形參定義--------------------
函數的預設參數:
  文法:
    def 函數名 (形參名1=預設實參1, 形參2=預設實參2)
      語句塊
  說明:
    預設參數必須從右至左依次存在的,如果一個參數有預設參數,
    則右側的所有參數都必須有預設參數
函數的形參定義:
    1.位置形參
      2.星號元組形參
    3.命名關鍵字形參
      4.雙星號字典形參
位置形參:
  文法:
    def 函數名(形參1, 形參2.......)
      語句塊
元組形參:
  文法:
    def 函數名(*元組形參名):
      語句塊
  作用:
    收集多餘的位置傳參
命名關鍵字形參:
  文法:
    def 函數名(*, 命名關鍵字形參):
      語句塊
    或
    def 函數名(*args, 命名關鍵字形參):
      語句塊
    (關鍵字形參 必須用關鍵字傳參)
  作用:
    強制所有的參數都參數都必須用關鍵字傳參或字典關鍵字傳參
雙星號字典傳參:
  文法:
    def 函數名(**字典形參名):
      語句塊
  作用:
    收集多餘關鍵字傳參
    字典形參名通常命名為:kwargs
函數的參數說明:
  位置形參、星號元組形參、命名關鍵字形參、雙星號字典形參可以混合使用
函數自左到右的順序為:
    1.位置形參
    2.星號元組形參
    3.命名關鍵字形參
    4.雙星號字典形參
  例如:
    def fx(a, b, *args, c, **kwargs):
      pass
    fx(100, 200, 300, 400, c="c", d="d")
函數的不定長參數:
  星號元組形參,雙星號字典形參
  說明:
    可以接收任意位置傳參和關鍵字傳參
  例如:
    def fn(*args, **kwargs)
      pass

全域變數和局部變數:
  局部變數:local variable
    1.定義函數內的變數成為局部變數(函數的形參也是局部變數)
    2.局部變數只能在函數內部使用
    3.局部變數在函數調用時才能夠被建立,在函數調用之後被銷毀
  全域變數:global variable
    定義在函數外,模組內的變數稱為全域變數
    全域變數所有函數都可以直接存取(但函數內不能將其直接賦值)

 

練習:
1.寫一個函數minmax(a, b, c) 有三個參數,這回這三個參數中的最小值和最大值,
要求,形成元組,最小值在前,最大值在後,如:

def minmax(a, b, c):
...

t = minmax(11, 33, 22)
print(t) # (11, 33) # <<< 列印元組
xiao, da = minmax(6, 5, 4)
print(‘最小值:‘, xiao, ‘最大值:‘, da)

答案:

def minmax(a, b, c):    x = a    if x > b:        x = b    if x > c:        x = c    z = a      if z < b:        z = b    if z < c:        z = c    L = [x, z]    print(L)minmax(2, 1, 3)

方法二:
def minmax(a, b, c):    L = [min(a, b, c), max(a, b, c)]    print(L)minmax(2, 3, 1)

其實方法二 這樣也是可以的不過就是有點不厚道了  這不屬於二道販子嘛

 

2.寫一個函數 myadd, 此函數可以計算兩個數的和,也可以計算三個數的和

def myadd(......):
....
print(myadd(10, 20)) # 30
print(myadd(100, 200, 300)) # 600

答案:

def myadd(a, b, c=0):    return a + b + cprint(myadd(100, 200, 300))print(myadd(100, 200))
def mysum(*args):    return sum(args)

皮一下很開心  mysum = sum

 

3 . 寫一個函數,print_odd, 此函數可以傳遞一個實參,也可以傳遞兩個實參,當傳遞一個實參時代表結束值
當傳遞兩個實參時,第一個實參代表起始值,第二個實參代表結束值
列印出以此區間內的全部奇數,不包含結束數:

print_odd(10) # 1 3 5 7 9
print_odd(11, 20) # 11 13 15 17 19

答案:

def print_odd(a, b=None):    if b == None:        b = a        a = 0    for x in range(a, b):        if x % 2 != 0:            print(x, end=" ")print_odd(10)# 1 3 5 7 9print_odd(11, 20)# 11 13 15 17 19

4. 寫一個函數, mysum可以傳入任意個實參的數字,返回所有實參的和

def mysum(*args):
...
print(mysum(1, 2, 3, 4)) # 10
print(mysum(10, 20, 30)) # 60

 答案:

def mysum(*args):    i = 0    for x in args:        i += x    return iprint(mysum(1, 2, 3, 4)) # 10print(mysum(10, 20, 30)) # 60

 

6. 建立一個全域變數 L = []
寫一個函數:
def input_number():
....
此函數每次調用將從鍵盤讀入一些數字追加到列表L中

如:
L = []
def input_number():
....
input_number()
print(L) # [ .... 這些是您從鍵盤輸入的數..]

L = []def input_number():    while True:        a = int(input("please input (-1 over):"))        if a < 0:            break        L.append(a)    return LL = input_number()print(L) # [ .... 這些是您從鍵盤輸入的數..]

7. 寫一個函數isprime(x) 判斷x是否為素數。如果是素數,返回True,否則返回False

答案:

def isprime(x):    if x > 2:        for i in range(2, x):            if x % i == 0:                s = False                break        else:            s = True    else:        if 1 < x < 3:            s = True        else:            s = False    return sx = isprime(4)print(x)

 

8. 寫一個函數prime_m2n(m, n) 返回從m開始,到n結束(不包含n)範圍內的素數,返回這些素數的列表並列印
如:
L = prime_m2n(5, 10)
print(L) [5, 7]

答案:

def prime_m2n(m, n):    L = []    for x in range(m, n):        if isprime(x) == True:            L.append(x)    return LL = prime_m2n(5, 10)print(L)

9. 寫一個函數pimes(n) 返回小於n的全部素數的列表,並列印這些素數
如:
L = primes(10)
print(L) # [2, 3, 5, 7]
1) 列印100 以內的全部素數
2) 列印200 以內的全部素數的和

答案:

 

def pinmes(n):    return prime_m2n(1, n)L = pinmes(10)print(L) # [2, 3, 5, 7]print(pinmes(100))print(sum(pinmes(200)))

 


10. 編寫函數 fn(n) 此函數返回下列級數的和:
fn(n) = 1/(1*2) + 1/(2*3) + ....
+ 1/(n*(n-1)) 的和

print(fn(100))

 答案:

def fn(n):    s = 0    for i in range(1, n):        s += 1 / (i * (i + 1))    return sprint(fn(100))

 

一波經驗加成buff: (咳咳 C波牛B)
  開局 一人 一電腦 ,一鍵盤999999999999999級
你肯會迷茫 暈眩 摸不著頭尾 沒關係 給你加個經驗值BUFF
  因為很多專業術語比較抽象 再加上翻譯差別 所以說很多人都是知道專業術語該怎麼說
叫什麼 一般容易記住和記憶最久的應該就是用自己的方式去跟現實或者一些列子對比
越白話文越好記 什麼花裡胡哨的術語 知道是什麼就行了 (能記還是要記得 說也盡量說
只是在你腦子裡是一個對應的執行個體關係 就好比 變數 在記憶體中.......跑題了 溜了 溜了)

實參、傳參、形參是什麼 ?
    實參就是調用函數時的參數
    傳參就是把形參傳給實參的過程
    形參就是定義(封裝)函數時的參數
字典關鍵字傳參就是把字典先用(**)拆開分成形參和實參
        鍵代表關鍵字(形參、不可變)
        值代表參數(實參、可變)
    一個鍵對應一個值 一個關鍵字對應一個參數
列表、元組 都是屬於順序傳參 先用(*)拆分後傳參
    關鍵字傳參必須有關鍵字(形參)和參數(實參)
傳參的定序:
  從左至右 1.位置形參 2.星號元組形參 3.命名關鍵字形參 4.雙星號字典形參
    變數沒什麼可說的 就相當於一個公用電話(全域)和私人手機(局部)
所有人都可以用公用電話 你的私人手機你會讓所有人用嗎?我想不會吧

 

ParisGabriel:Python全棧工程師(0基礎到精通)教程 第十四課(函數的傳參)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.