函式的呼叫
以絕對值函式abs()為例,可以直接從python的官方**檢視文件,也可以從互動介面利用help(abs)檢視。
常用或不好記函式(持續更新)
hex()函式:將乙個整數轉換為十六進製制表示的字串。
函式的定義
定義乙個函式要使用def語句,函式返回值用return語句返回。
ep:def my_abs(x):
if x >= 0:
return x
else:
return -x
自己定義的my_abs函式,儲存為abstest.py檔案,可在該檔案的當前目錄下啟動python直譯器,用from abstest import my_abs來匯入my_abs()函式#abstest是檔名,不含副檔名。
空函式可利用pss語句作為佔位符,沒想好如何寫的**,可利用pass語句先執行。
之前自己定義的函式沒有引數檢查的部分,是不完整的,可利用內建函式isinstance()實現:
def
my_abs
(x):
if notisinstance(x, (int, float)):
raise
typeerror(
'bad operand type'
)
ifx >= 0:
return
x
else
:
return
-x
函式返回多個值的時候,實際上是返回了乙個tuple:
import math
defmove
(x, y, step, angle=0):
nx = x + step * math.cos(angle)
ny = y - step * math.sin(angle)
return nx, ny
import math
語句表示匯入math
包,並允許後續**引用math
包裡的sin
、cos
等函式。
然後,我們就可以同時獲得返回值:
>>> x, y = move(100, 100, 60, math.pi / 6)
>>> print(x, y)
151.96152422706632
70.0
但其實這只是一種假象,python函式返回的仍然是單一值:
>>> r = move(100, 100, 60, math.pi / 6)
>>> print(r)
(151.96152422706632, 70.0)
函式的引數
可以設定預設引數,使簡單函式變得簡便,例如:設定乙個函式為def power(x,n=2)#其中n=2為預設引數,意為預設時此函式計算x的平方的值,呼叫此函式,可以直接呼叫power(5),相當於呼叫power(5,2)。
定義預設引數要牢記一點:預設引數必須指向不變物件!
預設引數改變解決方法:
def
add_end
(l=none):
if l is
none:
l =
return l
可變引數:
在引數前加*,在此種情況下,tuple前加*也同樣適用。
關鍵字引數:
不光接受值,還接受關鍵字;用**dic即可將dic的所有key-value用關鍵字引數傳入到函式中,
小結:
習慣性用法
*args是乙個可變引數
**kw是乙個關鍵字引數
遞迴函式:
解決遞迴呼叫棧溢位的方法是尾遞迴優化,類似迴圈。
exp:
def
fact
(n):
return fact_iter(n, 1)
deffact_iter
(num, product):
if num == 1:
return product
return fact_iter(num - 1, num * product)
經典例題:(漢諾塔問題)
def move(n,a,b,c):
if n == 1:
print(a, '-->', c)
if n>1:
move(n-1,a,c,b)
print(a, '-->', c)
move(n-1,b,a,c)
Python學習之第二步
第一步安裝好了python軟體之後,就要開始正式的學習了 一 python的資料型別 1.python變數 python變數有兩個特徵 1 變數無需生命即可直接賦值 對乙個不存在的變數賦值就相當於定義了乙個新變數 2 變數的資料型別可以動態改變。使用print 函式輸出變數。2.python識別符號...
R學習之第二步
上節課學習了r的安裝以及簡單的一些語法,這節課也是簡單的了解一下r的內容 1,r的包 通過library 檢視所有的包 通過 install.packages car 安裝新的包 通過help package car 檢視關於包的資訊 通過update.package car 更新包 2,結果的重用...
js第二步學習1
今天學習的乙個例子是 首先是4個運算方法 function add x,y function subtract x,y function multip x,y function division x,y 寫乙個公用方法可以呼叫上面4個方法 function pro operate,operand1,...