首頁 後端開發 Python教學 python中函數的詳細說明

python中函數的詳細說明

Mar 08, 2017 am 10:17 AM
Python直函數

斐波拉希數列

>>> fibs
[0, 1]>>> n=input('How many Fibonacci numbers do your what?')
How many Fibonacci numbers do your what?10
>>> for n in range(n-2):
    fibs.append(fibs[-2]+fibs[-1])    
>>> fibs
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
登入後複製

 注意:內建的callable函數可以用來判斷函數是否可以呼叫

def 定義函數

>>> def hello(name):
    print "Hello"+name

    
>>> hello('world')
Helloworld
登入後複製

# 用函數寫法波波拉希數列

>>> def fibs(num):
    s=[0,1]
    for i in range(num-2):
        s.append(s[-2]+s[-1])

        
>>> fibs(10)
登入後複製

 注意:return語句從函數中返回值

函數說明:如果給函數寫文檔,讓其他人能理解的話,可以加入註解( #開頭)。另外一種方法就是直接寫上字串。

>>> def square(x):
    'Calculates the square of the number x.'
    return x*x

>>> square.__doc__
'Calculates the square of the number x.'
登入後複製

內建的help函數,可以得到關於函數,包括它的文件字串資訊

>>> help(square)
Help on function square in module __main__:

square(x)
    Calculates the square of the number x.
登入後複製

 在函數內為參數賦予新值不會改變外部變數的值:

>>> def try_to_change(n):
    n='Mr,Gumby'

    
>>> name='Mrs,Entity'
>>> try_to_change(name)
>>> name
'Mrs,Entity'
登入後複製

 字串(以及數字和元組)是不可改變的,即無法修改。若將可改變的資料結構(列表或字典)修改,參數會被修改

>>> n=['Bob','Alen']
>>> def change(m):
    m[0]='Sandy'

    
>>> change(n[:])
>>> n
['Bob', 'Alen']
>>> change(n)
>>> n
['Sandy', 'Alen']
登入後複製

 關鍵字參數與預設值

>>> def hello(name,greeting='Hello',punctuation='!'):
    print '%s,%s%s' % (greeting,name,punctuation)

    
>>> hello(name='Nsds')
Hello,Nsds!
>>> hello(name='Nsds',greeting='Hi')
Hi,Nsds!
登入後複製

收集參數

#傳回元組:

##

>>> def print_params(*params):
    print params

    
>>> print_params('Testing') #返回元组
('Testing',)
>>> print_params(1,2,3)
(1, 2, 3)
>>> def print_params_2(title,*params):
    print title
    print params

    
>>> print_params_2('Params:',1,2,3)
Params:
(1, 2, 3)
登入後複製

 回傳字典

>>> def print_params_3(**params):
    print params

    
>>> print_params_3(x=1,y=2,z=3)
{'y': 2, 'x': 1, 'z': 3}
>>> def print_params_4(x,y,z=3,*pospar,**keypar):
    print x,y,z
    print pospar
    print keypar

    
>>> print_params_4(1,2,3,5,6,7,foo=1,bar=2)
2 3
(5, 6, 7)
{'foo': 1, 'bar': 2}
>>> print_params_4(1,2)
2 3
()
{}
登入後複製

# 呼叫元組、字典

>>> def add(x,y):return x+y

>>> params=(1,2)
>>> add(*params)
>>> def with_stars(**kwds):
    print kwds['name'],'is',kwds['age'],'years old']
>>> def without_starts(kwds):
    print kwds['name'],'is',kwds['age'],'years old'
>>> args={'name':'Nsds','age':24}
>>> with_stars(**args)
Nsds is 24 years old
>>> without_starts(args)
Nsds is 24 years old
>>> add(2,args['age'])
登入後複製

 星號只在定義函數(允許使用不定數目的參數)或呼叫("分割"字典或序列)時才有用

>>> def foo(x,y,z,m=0,n=0):
    print x,y,z,m,n

    
>>> def call_foo(*args,**kwds):
    print "Calling foo!"
    foo(*args,**kwds)

>>> d=(1,3,4)
>>> f={'m':'Hi','n':'Hello'}
>>> foo(*d,**f)
3 4 Hi Hello
>>> call_foo(*d,**f)
Calling foo!
3 4 Hi Hello
登入後複製

 幾個例子

>>> def story(**kwds):
    return 'Once upon a time,there was a' \
           '%(job)s called %(name)s.' % kwds

>>> def power(x,y,*others):
    if others:
        print 'Received redundant parameters:',others
    return pow(x,y)

>>> def interval(start,stop=None,step=1):
    if stop is None:
        start,stop=0,start  #start=0,stop=start
    result=[]
    i=start
    while i<stop:
        result.append(i)
        i+=step
    return result

>>> print story(job=&#39;king&#39;,name=&#39;Gumby&#39;)
Once upon a time,there was aking called Gumby.
>>> print story(name=&#39;Sir Robin&#39;,job=&#39;brave knight&#39;)
Once upon a time,there was abrave knight called Sir Robin.
>>> params={&#39;job&#39;:&#39;language&#39;,&#39;name&#39;:&#39;Python&#39;}
>>> print story(**params)
Once upon a time,there was alanguage called Python.
>>> del params[&#39;job&#39;]
>>> print story(job=&#39;store of genius&#39;,**params)
Once upon a time,there was astore of genius called Python.
>>> power(2,3)
>>> power(y=3,x=2)
>>> params=(5,)*2
>>> power(*params)
>>> power(3,3,&#39;Helld,world&#39;)
Received redundant parameters: (&#39;Helld,world&#39;,)
>>> interval(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> interval(1,5)
[1, 2, 3, 4]
>>> power(*interval(3,7))
Received redundant parameters: (5, 6)
登入後複製

# 修改全域變數

>>> def f():
    global x
    x=x+1

    
>>> f()
>>> x
>>> f()
>>> x
登入後複製

巢狀

>>> def multiplier(factor):
    def multiplyByFactor(number):
        return number*factor
    return multiplyByFactor

>>> double=multiplier(2)
>>> double(5)
>>> multiplier(2*5)
<function multiplyByFactor at 0x0000000002F8C6D8>
>>> multiplier(2)(5)
登入後複製

遞迴(呼叫)

階乘與冪

>>> def factorial(n):
    if n==1:
        return 1
    else:
        return n*factorial(n-1)
    
>>> factorial(5)
>>> range(3)
[0, 1, 2]
>>> def power(x,n):
    result=1
    for i in range(n):
        result *= x
    return result
>>> power(5,3)
登入後複製

>>> def power(x,n):
    if n==0:
        return 1
    else:
        return x*power(x,n-1)

    
>>> power(2,3)
登入後複製


 二元找出

#

>>> def search(s,n,min=0,max=0):
    if max==0:
        max=len(s)-1
    if min==max:
        assert n==s[max]
        return max
    else:
        middle=(min+max)/2
        if n>s[middle]:
            return search(s,n,middle+1,max)
        else:
            return search(s,n,min,middle)

        
>>> search(seq,100)
登入後複製

 map函數

它接收一個函數和一個列表,並透過函數依序作用在list的每個元素上,得到一個新的list並回傳

>>> map(str,range(10))
[&#39;0&#39;, &#39;1&#39;, &#39;2&#39;, &#39;3&#39;, &#39;4&#39;, &#39;5&#39;, &#39;6&#39;, &#39;7&#39;, &#39;8&#39;, &#39;9&#39;]
>>> def f(x):
    return x*x

>>> print map(f,[1,2,3,4,5,6,7])
[1, 4, 9, 16, 25, 36, 49]
登入後複製

>>> def format_name(s):
    s1=s[0].upper()+s[1:].lower()
    return s1

>>> print map(format_name,[&#39;ASDF&#39;,&#39;jskk&#39;])
[&#39;Asdf&#39;, &#39;Jskk&#39;]
登入後複製

## filter函數

它接收一個函數和一個列表(list),這個函數依次對每個元素進行判斷,返回True或False,filter()根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新列表

>>> def is_not_empty(s):
    return s and len(s.strip())>0

>>> filter(is_not_empty,[None,&#39;dshk&#39;,&#39;  &#39;,&#39;sd&#39;])
[&#39;dshk&#39;, &#39;sd&#39;]
>>> def pfg(x):
    s=math.sqrt(x)
    if s%1==0:
        return x

>>> import math
>>> pfg(100)
>>> pfg(5)
>>> filter(pfg,range(100))
[1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> def is_sqr(x):
    return math.sqrt(x)%1==0

>>> is_sqr(100)
True
>>> filter(is_sqr,range(100))
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
登入後複製

 lambda函數

也叫匿名函數,即,函數沒有特定的名稱,而用def創建的方法是有名稱的

######
>>> def foo():return &#39;Begin&#39;

>>> lambda:&#39;begin&#39;
<function <lambda> at 0x0000000002ECC2E8>
>>> s=lambda:&#39;begin&#39;
>>> print s()
begin
>>> s= lambda x,y:x+y
>>> print s(1,2)
>>> def sum(x,y=6):return x+y

>>> sum2=lambda x,y=6:x+y
>>> sum2(4)
登入後複製
############
>>> filter(lambda x:x*x,range(1,5))
[1, 2, 3, 4]>>> map(lambda x:x*x,range(1,5))
[1, 4, 9, 16]>>> filter(lambda x:x.isalnum(),[&#39;8ui&#39;,&#39;&j&#39;,&#39;lhg&#39;,&#39;)j&#39;])
[&#39;8ui&#39;, &#39;lhg&#39;]
登入後複製
#########reduce函數######它接收一個函數和一個列表(list),函數必須接收兩個參數,這個函數依序對列表每個元素進行調用,返回結果值組成的新列表########
>>> reduce(lambda x,y:x*y,range(1,5))
24
>>> reduce(lambda x,y:x+y,[23,9,5,6],100) #初始值为100,依次相加列表中的值
143
登入後複製
#########更多python中函數的詳細說明相關文章請關注PHP中文網! ###
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Python函數介紹:abs函數的用法和範例 Python函數介紹:abs函數的用法和範例 Nov 03, 2023 pm 12:05 PM

Python函數介紹:abs函數的用法和範例一、abs函數的用法介紹在Python中,abs函數是一個內建函數,用於計算給定數值的絕對值。它可以接受一個數字參數,並傳回該數字的絕對值。 abs函數的基本語法如下:abs(x)其中,x是要計算絕對值的數值參數,可以是整數或浮點數。二、abs函數的範例下面我們將透過一些具體的範例來展示abs函數的用法:範例1:計算

Python函數介紹:isinstance函數的用法和範例 Python函數介紹:isinstance函數的用法和範例 Nov 04, 2023 pm 03:15 PM

Python函數介紹:isinstance函數的用法和範例Python是一門功能強大的程式語言,提供了許多內建函數,使得程式設計變得更加方便和有效率。其中一個非常有用的內建函數是isinstance()函數。本文將介紹isinstance函數的用法和範例,並提供具體的程式碼範例。 isinstance()函數用來判斷一個物件是否是指定的類別或類型的實例。該函數的語法如下

如何解決Python的函數中的硬編碼錯誤? 如何解決Python的函數中的硬編碼錯誤? Jun 25, 2023 pm 08:15 PM

隨著Python程式語言的廣泛應用,開發者常常會在編寫程式過程中遇到「硬編碼錯誤」的問題。所謂“硬編碼錯誤”,指的是將具體的數值、字串等資料直接寫入程式碼中,而不是將其定義為常數或變數。這做法存在著多方面的問題,例如可讀性低,難以維護、修改和測試,同時也會增加出錯的可能性。本篇文章就如何解決Python函數中的硬編碼錯誤這一問題進行探討。一、什麼是硬

Python函數介紹:filter函數的作用與範例 Python函數介紹:filter函數的作用與範例 Nov 04, 2023 am 10:13 AM

Python函數介紹:filter函數的作用和範例Python是一種功能強大的程式語言,提供了許多內建的函數,其中之一就是filter函數。 filter函數用於過濾清單中的元素,並傳回滿足指定條件的元素組成的新清單。在本文中,我們將介紹filter函數的作用,並提供一些範例來幫助讀者理解其用法和潛力。 filter函數的語法如下:filter(function

Python函數介紹:dir函數的用法和範例 Python函數介紹:dir函數的用法和範例 Nov 03, 2023 pm 01:28 PM

Python函數介紹:dir函數的用法和範例Python是一種開源的、進階的、解釋性的程式語言。它可用於開發各種類型的應用程序,包括網頁應用程式、桌面應用程式和遊戲等。 Python提供了大量的內建函數和模組,這些函數和模組可以幫助程式設計師快速編寫高效的Python程式碼。其中,dir函數是一個非常有用的內建函數,它可以幫助程式設計師查看物件、模組或類別中的屬性和方法

Python函數介紹:globals函數的功能和使用範例 Python函數介紹:globals函數的功能和使用範例 Nov 04, 2023 pm 02:58 PM

Python函數介紹:globals函數的功能和使用範例Python是一種功能強大的程式語言,提供了許多內建函數,其中globals()函數就是其中之一。本文將介紹globals()函數的功能和使用範例,並附帶具體的程式碼範例。一、globals函數的功能globals()函數是一個內建函數,用來傳回目前模組的全域變數的字典。它傳回一個包含全域變數的字典,其中

Python函數介紹:range函數的介紹及範例 Python函數介紹:range函數的介紹及範例 Nov 04, 2023 am 10:10 AM

Python函數介紹:range函數的介紹及範例Python是一種廣泛應用於各種領域的高階程式語言,它具有簡單易學的特點,並且有著豐富的內建函數庫。其中,range函數是Python中常用的一個內建函數之一。本文將詳細介紹range函數的功能以及使用方法,並透過實例來示範其具體的應用。 range函數是用來產生一個整數序列的函數,它接受三個參數,分別是起始值(

如何解決Python的函數中的並發不安全錯誤? 如何解決Python的函數中的並發不安全錯誤? Jun 24, 2023 pm 12:37 PM

Python是一門流行的高階程式語言,它具有簡單易懂的語法、豐富的標準函式庫和開源社群的支持,而且還支援多種程式設計範式,例如物件導向程式設計、函數式程式設計等。尤其是Python在資料處理、機器學習、科學計算等領域有廣泛的應用。然而,在多執行緒或多進程程式設計中,Python也存在一些問題。其中之一就是併發不安全。本文將從以下幾個方面介紹如何解決Python的函數中的並發不安

See all articles