python的函數

來源:互聯網
上載者:User

標籤:函數參數   特定   順序   函數的參數   show   war   情況   根據   傳回值   

1.什麼是函數?

有兩個變數 x 和 y ,當 x 取其變化範圍中的每一個特定值時,相應地有唯一的 y 與它對應,則稱 y 是 x 的函數。記為 y = f ( x ),其中 x 為自變數, y 為因變數。

可知函數由三部分組成:

x:輸入,一般函數可以有多個輸入。
f:function,通過某種特定的方法將x轉換為y,function就是這個方法。
y:輸出,一般函數只有一個輸出,電腦技術中的函數也可以沒有輸出。

<p id="div-border-left-red">python的函數:由若干個語句塊(function)、函數名稱、參數列表(輸入)構成,完成一個功能(輸出)。</p>

2.函數的定義及調用1.函數的定義

python使用def語句定義函數

def 函數名(參數列表):    函數體(代碼塊)    [return 傳回值]

函數名:一般命名要求。
參數列表:放一個標誌符佔位,叫做<font color=#DC143C >形參</font>。
函數體:代碼塊,決定函數的參數。
return:預設都會使用return語句,若無預設返回None。

2.函數的調用

通過前面定義的函數名稱進行調用,就可以將函數運行起來,從而得到函數的傳回值。
注意:
調用的時候需要在函數名稱後加個小括弧()括弧內填入函數體中需要的參數,傳入的參數叫做<font color=#DC143C >實參</font>。
函數傳入的參數必須和函數體中需要的函數(實參)保持數量一致,除非原函數參數列表中定義的有預設參數。

#定義函數add()def add(x,y):    sum = x+y    return sum#調用函數add()add(1,3)
4
3.函數的參數

python傳入的參數分為兩類,一種說根據位置傳入的參數叫位置參數,另外一種可以根據形參定義的變數傳入的參數叫關鍵字參數。
傳入的時候,位置參數需放在關鍵字參數之前。

1.普通位置參數

把參數1給x,參數3給y。一一對應,這種就是位置參數。位置參數是按照順序一一傳入。

def add(x,y):    sum = x+y    return sumadd(1,3)  
4
2.可變位置參數

在普通位置前面加個"*",可以一次接受多個參數。使用一個元組(tuple)收集多個實參。

def add(*nums):    sum = 0    print(type(nums))    for x in nums:        sum+=x    print(sum)add(3,5,6)
<class ‘tuple‘>14

<div class="note danger no-icon"><p>說明:一般情況下,如果普通參數和可變位置參數一起定時候,需要把普通參數放在位置參數之前。</p></div>

def add(x,*nums):    sum = 0    print(nums)    for x in nums:        sum+=x    print(sum)add(3,5,6)
(5, 6)11
3.關鍵字參數

把3傳給y,1傳給x。按照定義好的關鍵字傳入參數,位置可以隨意。

def add(x,y):    sum = x+y    return sumadd(y=3,x=1) 
4

<div class="note danger no-icon"><p>說明:當位置參數和關鍵字參數一起傳入時候,需要把位置參數放在關鍵字參數前面。</p></div>

def add(x,y):    sum = x+y    return sumadd(1,y=1) 
2
4.可變關鍵字參數

在普通關鍵字參數前面加兩個"**",可以一次接受多個關鍵字參數,收集到的實參名稱和值組成一個字典(dict)。

def showconfig(**kwargs):    for k,v in kwargs.items():        print(‘{} = {}‘.format(k, v))showconfig(host=‘127.0.0.1‘,port=‘8080‘,username=‘mykernel‘,password=‘qwe123‘)
username = mykernelpassword = qwe123port = 8080host = 127.0.0.1

<div class="note danger no-icon"><p>說明:當可變參數和普通參數一起定義時,需要把可變參數放在普通參數之後。</p></div>

def showconfig(x,y,*args,**kwargs):        print(x)        print(y)        print(args)        print(kwargs)showconfig(‘127.0.0.1‘,8080,‘mykernel‘,password=‘qwe123‘)#此時使用關鍵字參數給x,y賦值就會報錯。
127.0.0.18080(‘mykernel‘,){‘password‘: ‘qwe123‘}
5.預設參數

有些參數很少改變,所以可以在指定形參的時候傳入一個預設值,當有新的實參去替換它的時候,新的參數生效。
預設參數必須放在普通參數之後

#傳入預設值參數def add(x=11,y=111):    sum = x+y    return sumadd() #未傳入參數,預設參數生效
122
#有再次傳入參數,替換預設值。def add(x=11,y=111):    sum = x+y    return sumadd(657,y=123) #新傳入的參數生效
780

定義一個函數login,參數名稱為host、port、username和password。

def login(host=‘127.0.0.1‘,port=‘80‘,username=‘mykernel‘,password=‘123‘):    print(‘{}:{}\nname:{}\npasswd:{}\n‘.format(host,port,username,password))login()login(‘192.168.1.1‘,8080)login(‘10.0.0.1‘,password=‘qwe123‘)
127.0.0.1:80name:mykernelpasswd:123192.168.1.1:8080name:mykernelpasswd:12310.0.0.1:80name:mykernelpasswd:qwe123
6.keyword-only參數(python3後引入)

定義方法一:在可變位置參數後,出現普通參數。此時這個普通參數就被python視作為keyword-only參數,keyword-only參數在傳入時必須使用關鍵字傳參方法傳入。

定義方法二:def fn(*, x,y),*,後跟普通參數,也被視為keyword-only參數,x,y均為keyword-only參數。

7.參數定義順序

<div class="note danger no-icon"><p>參數列表的一般順序是:普通參數,預設參數,可變位置參數,keyword-only參數(可帶預設值),可變關鍵字參數。</p></div>

def fn1(x, y, z=3, *args, m=4, n, **kwargs):    print(x,y)    print(z)    print(args)    print(m,n)    print(kwargs)    print(end=‘\n‘)#x,y是普通參數#z,帶預設值,傳入時候省略,預設參數#*args,可變位置參數#m=4,keyword-only 預設參數#n,keyword-only參數#**kwargs,可變關鍵字參數fn1(1,2,n=4)fn1(1,2,4,43,123,k=123,m=11,n=13,j=‘hello‘)
1 23()4 4{}1 24(43, 123)11 13{‘j‘: ‘hello‘, ‘k‘: 123}
def fn2(x, y, z=3, *, m=4, n, **kwargs):  #定義m,n為keyword-only參數。    print(x,y)    print(z)    print(m,n)    print(kwargs)    print(end=‘\n‘)fn2(1,2,m=1,n=2)
1 231 2{}
8.參數解構
def add(x,y):    print(x+y)    print()add(*(4,6)) #參數解構# add(*(1,2)) add(*[1,2]) add(*{1,3}) add(**{‘x‘:1,‘y‘:11}) #字典參數解構,x,y參數要和定義的對應起來。把x=1,y=11 傳入形參,關鍵字傳參。d = {‘a‘:1,‘b‘:12}add(*d.keys()) #取k 把取出來的k賦值給形參,位置傳參。add(*d.values()) #取values
1012ab13

推廣部落格來了:http://hexo.mykernel.cn/python-function-1.html

python的函數

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.