Python数学建模入门【3】
1.4 函數(shù)
1.Python中定義函數(shù)的語法
#自定義函數(shù)的語法形式 def factorial(n):r = 1while n > 1:r *= nn -= 1return r print(factorial(5))運(yùn)行結(jié)果:
120這里使用了python中有關(guān)函數(shù)的定義,形式如上,python中的:是格式要求,如果缺少的話會報(bào)錯(cuò),除此之外,python用四個(gè)空格的縮進(jìn)來表示代碼塊之間的縮進(jìn),例如define和while之間間隔四個(gè)空格,while和循環(huán)中的語句間隔同樣為四個(gè)空格,python對于格式的要求很嚴(yán)格,在編碼過程中要養(yǎng)成良好的習(xí)慣。
#求數(shù)字的p次方的和 def square_sum(n,p = 2):result = sum([i**p for i in range(1,n+1)])return (n,p,result) print("1到%d的%d次方和為%d" %square_sum(10))運(yùn)行結(jié)果:
1到10的2次方和為3852.可變參數(shù)的python函數(shù)
#可變參數(shù)的python函數(shù) def add(*args):print (args ,end=' ')s = sum(args)return s print("的和為%d"%add(10,12,6,8))運(yùn)行結(jié)果:
(10, 12, 6, 8) 的和為36python中設(shè)置了可變參數(shù)的函數(shù),例如我們想計(jì)算多個(gè)數(shù)的和的時(shí)候,想要輸入多個(gè)數(shù)據(jù),我們就可以采用上面的形式,用*名稱來錄入多個(gè)數(shù)據(jù),可變參數(shù)函數(shù)會把輸入的數(shù)據(jù)封裝成一個(gè)元組,進(jìn)行函數(shù)的運(yùn)算。
3.關(guān)鍵字參數(shù)
#關(guān)鍵字參數(shù) def person(name,age,**kw):print('name:',name,'age:',age,'others:',kw) person('Michael',30) person('Bob',35,city = 'Beijing')運(yùn)行結(jié)果:
name: Michael age: 30 others: {} name: Bob age: 35 others: {'city': 'Beijing'}這種方式避免了可變參數(shù)接受多個(gè)實(shí)參后捆綁成一個(gè)元組,通過關(guān)鍵字參數(shù)可以構(gòu)造字典來實(shí)現(xiàn)對行參的單獨(dú)訪問,如圖在所示的程序中,name 和 age是位置參數(shù),兩個(gè)必須要傳入到對應(yīng)的值,其他關(guān)鍵字參數(shù)則是會不斷出現(xiàn) 。
4.參數(shù)傳遞
(1)
#參數(shù)傳遞def fun(a,b):a,b = b,a print('函數(shù)內(nèi)交換后的值是:%d %d\n'%(a,b))return a = 10;b = 5 print('調(diào)用函數(shù)前變量的值:%d %d\n' % (a,b)) fun(a,b) print('調(diào)用函數(shù)后變量的值:%d %d\n' % (a,b)) #我們可以看到兩個(gè)數(shù)值確實(shí)進(jìn)行了交換,但是外部實(shí)參的值并沒有改變運(yùn)行結(jié)果:
調(diào)用函數(shù)前變量的值:10 5函數(shù)內(nèi)交換后的值是:5 10調(diào)用函數(shù)后變量的值:10 5參數(shù)的傳遞方式有傳值和傳址兩種。
傳值的意思是說在函數(shù)中對變量進(jìn)行的任何改變不會影響實(shí)際變量的值,類似于C語言中的形參和實(shí)參。
傳址的意思則是說,會對地址中的內(nèi)容直接改變使用同一個(gè)地址。
(2)
#參數(shù)傳遞的復(fù)合數(shù)據(jù)包 def fun(a,b,c):print("三個(gè)數(shù)的和為:",a+b+c) seq = [1,2,3]; fun(*seq) tup = (1,2,3); fun(*tup) dic = {1:'a',2:'b',3:'c'};fun(*dic) seta = {1,2,3}; fun(*seta)運(yùn)行結(jié)果:
三個(gè)數(shù)的和為: 6 三個(gè)數(shù)的和為: 6 三個(gè)數(shù)的和為: 6 三個(gè)數(shù)的和為: 6運(yùn)用*可以對不同數(shù)據(jù)類型中的每個(gè)元素進(jìn)行相應(yīng)的訪問。
5.lambda函數(shù)使用
#lambda函數(shù)的使用示例 f = lambda n,m:sum([k**m for k in range (1,n+1)]) s = f(100,1)+f(50,2)+f(10,-1) print("s=%10.4f"%(s))運(yùn)行結(jié)果:
s=47977.92906.遞歸python函數(shù)
#在python中編寫遞歸函數(shù) x,n = eval(input("請輸入x和n的值:")) def p(x,n):if n == 1: return xelse: return x*(1-p(x,n-1)) v = p(x,n) print("p(%d,%d)=%d"%(x,n,v))
運(yùn)行結(jié)果:
請輸入x和n的值:2,4 p(2,4)=-107.python中查看文檔的方式
#python中導(dǎo)入模塊的方式 import numpy help(numpy.random)補(bǔ)充習(xí)題:
x = [1,2,3] y = [-1,-2,-3] list(zip(*zip(x,y)))運(yùn)行結(jié)果:
[(1, 2, 3), (-1, -2, -3)]可以先自行推斷結(jié)果,忘了的小伙伴可以去看看Python數(shù)學(xué)建模入門【2】中的解析。
Python數(shù)學(xué)建模入門【2】
總結(jié)
以上是生活随笔為你收集整理的Python数学建模入门【3】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用bat修复office文件图标
- 下一篇: 【数学建模】python建模专用数据清洗