Python基礎筆記:函數:調用函數、定義函數、函數的參數、遞迴函式

來源:互聯網
上載者:User

標籤:none   編寫程式   分享   city   rod   它的   color   *args   python基礎   

一、定義一個求二元一次方程的根的函數

#Sublime Textimport mathdef ee(a,b,c):    delta=b*b-4*a*c    if delta<0:        return ‘null‘    else:        m=math.sqrt(delta)        nx=(-b+m)/2/a        ny=(-b-m)/2/a        return nx,ny
#python解譯器>>> from hello import ee  #聲明調用py檔案中所定義的函數ee>>> ee(1,0,9)‘null‘>>> ee(1,0,-9)(3.0, -3.0)

二、函數的參數

函數的參數共有5類:位置參數、預設參數、可變參數、關鍵字參數、命名關鍵字參數

位置參數:

def pow(x):      return x*x  #求x的平方    def pow(x,n):    if n==0:        return 1    if n==1:        return x    return x*pow(x,n-1)  #求x的任意次方

預設參數:

#預設求x平方def pow(x,n=2):    if n==0:        return 1    if n==1:        return x    return x*pow(x,n-1)>>> from hello import pow>>> pow(5)25>>> pow(5,3)125>>> pow(5,0)1
#幼兒園新生等級,預設新生年齡為6,城市為ZZdef sign_in(name,gender,Age=6,city=‘ZZ‘):    print(name,gender,Age,city)>>> sign_in(‘jiaxinwei‘,‘boy‘)jiaxinwei boy 6 ZZ>>> sign_in(‘jiaxinwei‘,‘boy‘,city=‘NY‘)jiaxinwei boy 6 NY

使用預設參數一個很大的坑:

解釋:Python函數在定義的時候,預設參數L的值就被計算出來了,即[ ] , 因為預設參數 L 也是一個變數,它指向對象[ ],每次調用該函數,如果改變了L的內容,則下次調用時,預設參數的內容就變了,不再是函數定義時的[ ]了。

定義預設參數要牢記一點:預設參數必須指向不變對象(tuple,None,str)!!!

可變參數

可變參數顧名思義就是傳入參數的個數是可變的,可以是任意多個

def calc(*nums):    sum=0    for n in nums:        sum=sum+n*n    return sum>>> a=[1,2,3,4]>>> calc(*a)30>>> calc(1,2,3,4)30>>> calc(a)

關鍵字參數

def person(name,age,**kw):    print(‘name:‘,name,‘age:‘,age,‘other:‘,kw)#其中name,age是必選參數,kw是關鍵字參數。在調用該函數時,可以只傳入必選參數,也可以傳入任意個關鍵字參數,關鍵字參數在函數內部自動組裝為一個dict。
>>> from hello import person>>> person(‘jiaxinwei‘,8) #1name: jiaxinwei age: 8 other: {}>>> person(‘jiaxinwei‘,8,city=‘NY‘,gender=‘M‘) #2name: jiaxinwei age: 8 other: {‘city‘: ‘NY‘, ‘gender‘: ‘M‘}>>> extra={‘city‘:‘Beijing‘,‘job‘:‘Student‘} #3>>> person(‘jack‘,24,**extra)name: jack age: 24 other: {‘city‘: ‘Beijing‘, ‘job‘: ‘Student‘}

關鍵字參數的作用:是想你正在做一個使用者註冊的功能,除了使用者名稱和年齡是必填項外,其他都是可選項,利用關鍵字參數來定義這個函數就能滿足註冊的需求。

命名關鍵字參數

如果要限制關鍵字參數的名字,就可以用命名關鍵字參數(不是很理解這句話)

def person(name, age, *, city, job):    print(name, age, city, job)# *號前面的是必選參數,後面的是命名關鍵字參數
#如果函數定義中已經有了一個可變參數,後面跟著的命名關鍵字參數就不再需要一個分隔字元了def person(name,age,*args,city,job):    print(name,age,args,city,job)
#命名關鍵字函數可以有預設值def person(name,age,*,city=‘Beijing‘,job=‘student‘):    print(name,age,city,job)>>> from hello import person>>> person(‘jiaxinwei‘,11)jiaxinwei 11 Beijing student

現在還不知道命名關鍵字函數在什麼情況下使用,先mark,後補執行個體~

參數組合

在python中定義函數,可以混用各種參數,不過參數定義的順序必須是:必選參數、預設參數、可變參數、命名關鍵字參數、關鍵字參數。

所以對於任意函數,都可以通過類似 func(*args,**kw) 的形式調用它,無論它的參數是如何定義的。

雖然可以組合多達五種參數,但不要同時使用太多的組合,否則函數介面的可理解性很差。

 

編寫程式:接收任意多數並計算乘積

def product(*nums):    if len(nums)==0:        sum=0    else:        sum=1    for x in nums:        sum*=x    return sum>>> from hello import product>>> product()0>>> product(5)5>>> product(5,6,7)210>>> product(5,6,7,9)1890

 

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.