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='king',name='Gumby') Once upon a time,there was aking called Gumby. >>> print story(name='Sir Robin',job='brave knight') Once upon a time,there was abrave knight called Sir Robin. >>> params={'job':'language','name':'Python'} >>> print story(**params) Once upon a time,there was alanguage called Python. >>> del params['job'] >>> print story(job='store of genius',**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,'Helld,world') Received redundant parameters: ('Helld,world',) >>> 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)) ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] >>> 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,['ASDF','jskk']) ['Asdf', 'Jskk']
它接收一個函數和一個列表(list),這個函數依次對每個元素進行判斷,返回True或False,filter()根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新列表
>>> def is_not_empty(s): return s and len(s.strip())>0 >>> filter(is_not_empty,[None,'dshk',' ','sd']) ['dshk', 'sd'] >>> 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]
也叫匿名函數,即,函數沒有特定的名稱,而用def創建的方法是有名稱的
######>>> def foo():return 'Begin' >>> lambda:'begin' <function <lambda> at 0x0000000002ECC2E8> >>> s=lambda:'begin' >>> 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(),['8ui','&j','lhg',')j']) ['8ui', 'lhg']
>>> reduce(lambda x,y:x*y,range(1,5)) 24 >>> reduce(lambda x,y:x+y,[23,9,5,6],100) #初始值为100,依次相加列表中的值 143

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

熱門話題

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

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

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

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

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

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

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

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