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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python函数参数的作用是_python函数参数理解

發布時間:2023/12/19 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python函数参数的作用是_python函数参数理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、位置參數

函數調用時,參數賦值按照位置順序依次賦值。

e.g.

1 deffunction(x):2

3return x *x4

5print function(2)

輸出結果: 4

1 deffunction(x, n):2

3   return x /n4

5print function(4, 2)

輸出結果: 2

2、默認參數

在函數定義時,直接指定參數的值。

e.g.

1 def function(x, n = 2):2

3 s = 1

4

5 while n >0:6

7 n = n -1

8

9 s = s *x10

11 returns12

13 print function(20)

輸出結果:400

注意:

1)必選參數必須在前,默認參數在后。

2)當函數有多個參數時,把變化大的放在前面。

好處:降低調用函數的難度。

3)當有多個默認參數時,可以按順序,也可使用參數名直接賦值。

e.g.

1 def enroll(name, gender, age = 6, city = 'beijing') :2

3   printname4

5   printgender6

7   printage8

9   printcity10

11 enroll('aaa', 'F', 7)

輸出內容:

aaa

F

7

beijing

1 enroll('bbb', 'M', 9, city = 'tianjin')

輸出內容:

bbb

M

9

tianjin

4)特別注意

e.g.

1 def add_end(L =[]):2

3   L.append('END')4

5   returnL6

7 add_end([1,2,3,4,5])

輸出內容:

[1,2,3,4,5,'END']

當多次調用add_end()時

1 add_end()2

3 add_end()

輸出內容:

['END', 'END']

這時就要對輸入參數進行判斷了:

1 def add_end(L =[]):2

3 if L isNone:4

5 L =[]6

7 L.append('END')8

9 returnL10

11 add_end()12

13 add_end()

輸出內容:

['END']

5)能設計不變的對象就設計成不變的對象。

3、可變參數

傳入的參數個數是可變的??勺儏翟诤瘮嫡{用時,會自動組裝一個tuple。

e.g.

1 defmy_sum(numbers):2 result =03 for i in numbers:4 result +=i5 returnresult6 print my_sum(2)

輸出內容:3

在調用my_sum函數時,是可以傳入多個參數的,但是要使用list或者tuple

1 print my_sum([1,2,3])2

3 print my_sum((1,2,3,4))

輸出內容:6 , 10

當函數的參數是一個list或者tuple時:

1 numbers = [1,2,3,4]2 print my_sum(*numbers)

輸出內容:10

*numbers表示把numbers這個list中的所有元素作為可變參數傳入函數。

4、關鍵字參數

關鍵字參數可以傳入任意個含參數名的參數,在函數調用時,自動組裝成dict。

e.g.

1 def enroll(name, age, **kw):2 print 'name : %s, age : %d' %(name, age), 'other:', kw3

4 enroll('test', 8, city = 'beijing', job = 'work')

輸出內容:name : aaa, age : 8 other {'city': 'beijing', 'job': 'work'}

enroll函數除了接受必選參數外還可以指定關鍵字參數kw,形式:'key' = 'value'。

關鍵字參數的作用:

擴展函數,除了必選內容還要擴展其他內容,如上例中的city=’beijing'。

把一個dict轉換成參數出入:

1 extra = {'city' : 'beijing', 'job' : 'work'}2 enroll('test', 9, **extra)3 #或者

4 enroll('test', 9, city = extra['city'], job = extra['job'])

5、命名關鍵字參數

就是指定關鍵字名稱。

e.g.

1 def persion(name, age, *, city, job):2 printname, age, city, job3 persion('test', 9, city = 'beijing', job = 'work')

輸出內容:test 9 beijing work

*不是參數,是特殊分隔符,*作用是分別位置參數和命名關鍵字參數。

6、參數組合

參數定義順序:必須參數、默認參數、可變參數、命名關鍵字參數和關鍵字參數。

e.g.

1 def function(a, b, c = 0, *args, **kw):2 print 'a:', a, 'b:', b, 'c:', c, 'args:', args, 'kw:', kw3

4 function(1,2)5 function(1,2,c=3)6 function(1,2,3,'a','b')7 function(1,2,3,'a','b',x = 99)

輸出內容:

a: 1 b: 2 c: 0 args: () kw: {}

a: 1 b: 2 c: 3 args: () kw: {}

a: 1 b: 2 c: 3 args: ('a', 'b') kw: {}

a: 1 b: 2 c: 3 args: ('a', 'b') kw: {'x': 99}

參數也可以用tuple和dict傳遞:

1 args = (1,2,3,4)2 kw = {'d' : 5, 'e' : 6, 'f' : 7}3 funciton(*args, **kw)

輸出內容:a: 1 b: 2 c: 3 args: (4,) kw: {'e': 6, 'd': 5, 'f': 7}

對于任何函數,無論參數是怎么定義的,都可以通過function(*args, **kw)的形式調用。

*args:是可變參數,args接收一個tuple。

**kw:是關鍵字參數,kw接收一個dict。

參數傳遞過程中存在倆個規則:

1)通過引用將參數復制到局部作用域的對象中,意味著被用來訪問的函數參數的變量與提供給函數的對象無關,以為存在一個復制問題,修改局部變量不會修改原始數據。

2)可以在適當的位置修改可變對象。可變對象主要是list和dict,適當的位置主要是在修改局部對象不會改變list對象或者dict對象的ID,也就是存儲位置。

1 #!/usr/bin/python

2

3 defmodifier(number, string, list):4 number = 5

5 string = 'GOODBYE'

6 list = [1,2,3]7 print 'inside:', number, string, list8

9 num = 10

10 string = 'goodbye'

11 list = [4,5,6]12 print 'before:', num, string, list13

14 modifier(num, string, list)15

16 print 'after:', num, string, list

輸出內容:

before: 10 goodbye [4, 5, 6]

inside: 5 GOODBYE [1, 2, 3]

after: 10 goodbye [4, 5, 6]

從輸出結果來看,數據交換前后數據并沒有發生改變,雖然在函數局部區域傳遞進來的參數進行了相應的修改,但是仍然不能改變實參對象的內容。這和C語言十分相似。

因為傳遞進來的參數在函數內部進行了修改,也就是變量指向了不同的存儲區(對象),這就相當于C語言中的實參與形參,只是對形參進行了修改,實參沒有改變。

所以說明函數內部對參數重新賦了值,并不會改變實參對象。

1 #!/usr/bin/python

2 defmodifier(list, dict):3 list[0] = 10

4 dict['a'] = 10

5 print 'inside: list = %s, dict = %s' %(list, dict)6

7 list = [1,2,3,4,5]8 dict = {'a' : 1, 'b' : 2, 'c' : 3}9 print 'defore: list = %s, dict = %s' %(list, dict)10

11 modifier(list, dict)12 print 'after: list = %s, dict = %s' %(list, dict)

輸出結果:

defore: list = [1, 2, 3, 4, 5], dict = {'a': 1, 'c': 3, 'b': 2}

inside:, list = [10, 2, 3, 4, 5], dict = {'a': 10, 'c': 3, 'b': 2}

after: list = [10, 2, 3, 4, 5], dict = {'a': 10, 'c': 3, 'b': 2}

從輸出結果可以看出,函數內部對傳遞進來的參數進行了修改,并且對實參對象也進行了修改,實際修改的是list和dict存儲位置上的數據,變量指向并沒有改變,所以實參對象也發生了變化。

注:文章中所有代碼沒有驗證,如有問題請告知。

本文參照:廖雪峰python

總結

以上是生活随笔為你收集整理的python函数参数的作用是_python函数参数理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产亚洲色婷婷久久99精品 | 巨胸喷奶水www久久久免费动漫 | 我要看免费的毛片 | 日日操日日摸 | 午夜网| 伊人色网站| 国产又黄又粗又猛又爽视频 | av波多野吉衣 | 国产乱淫a∨片免费观看 | 午夜影视剧场 | a级片网站 | 人人人人爽 | 久久精品二区 | 特色特色大片在线 | 精品国产欧美一区二区 | 五月天在线播放 | 久伊人 | 久久亚洲熟女cc98cm | 国产欧美日韩91 | 国产夜夜操 | 国产精品第56页 | 日本亚洲在线 | 亚洲中文字幕无码av永久 | 三级在线网址 | 欧美成人吸奶水做爰 | 久久无码专区国产精品s | 成人免费网站视频 | 午夜免费福利在线 | jizzjizz中国精品麻豆 | 91夜色视频 | 青青欧美 | 欧美一区二区福利视频 | 欧美一级做a爰片久久高潮 久热国产精品视频 | 亚洲精品一区二区二区 | 欧美aaa级 | 精品人妻人人做人人爽 | 久久露脸国语精品国产 | 国产拍拍拍拍拍拍拍拍拍拍拍拍拍 | 日韩少妇一区二区 | 五月天激情影院 | 免费无码又爽又黄又刺激网站 | 成人午夜精品视频 | 精品妇女一区二区三区 | 人人玩人人干 | 欧美日韩首页 | 欧美日韩国产一区二区三区在线观看 | www.一区 | 国产精品国产三级国产Av车上的 | 舐丝袜脚视频丨vk | 久久久久逼 | 色视频2 | 亚洲视频在线观看免费视频 | 理论片亚洲 | 久久综合久 | 反差在线观看免费版全集完整版 | www狠狠操| 国产人人草| 91成人在线观看高潮 | 日本少妇毛茸茸 | 亚洲国产精品一 | 亚洲国产中文字幕在线观看 | 色啪视频| 中文字幕成人网 | 欧美污污视频 | 97免费人妻无码视频 | 强videoshd酒醉 | 欧美激情精品久久久久久 | av最新网| 国产乱码精品一区二区三 | 正在播放adn156松下纱荣子 | 黄色一及毛片 | 日本乱偷人妻中文字幕在线 | 手机av在线看 | 成人免费一区二区 | 欧美性生活一区二区三区 | 三级黄色片免费观看 | 狠狠干很很操 | 欧美极品jizzhd欧美仙踪林 | 婷婷深爱| 久一在线视频 | 中文有码一区 | 国产日韩在线观看视频 | 久9精品| 久久涩视频 | 黄色一区二区视频 | av色片| 欧美黄色一区二区三区 | av在线综合网 | 一级黄色性生活片 | 91黄色小网站 | 老女人一毛片 | 狠狠操在线视频 | 91tv国产成人福利 | www.成人在线 | 一区二区三区四区精品视频 | 荔枝视频污 | 理论片大全免费理伦片 | 色婷婷五 | 国产精品揄拍一区二区 |