資料型別轉換
python內建的常用函式還包括資料型別轉換函式,比如int()
函式可以把其他資料型別轉換為整數:
>>
>
int(
'123'
)123
>>
>
int(
12.34)12
>>
>
float
('12.34'
)12.34
>>
>
str(
1.23
)'1.23'
>>
>
str(
100)
'100'
>>
>
bool(1
)true
>>
>
bool(''
)false
函式名其實就是指向乙個函式物件的引用,完全可以把函式名賦給乙個變數,相當於給這個函式起了乙個「別名」:
>>
> a =
abs# 變數a指向abs函式
>>
> a(-1
)# 所以也可以通過a呼叫abs函式
1
定義函式
python中,定義乙個函式要使用def
語句,依次寫出函式名、括號、括號中的引數和冒號:
,然後,在縮排塊中編寫函式體,函式的返回值用return
語句返回。
例如,自定義乙個求絕對值的my_abs
函式:
def
my_abs
(x):
if x >=0:
return x
else
:return
-x
ps:如果沒有return
語句,函式執行完畢後也會返回結果,只是結果為none
。return none
可以簡寫為return
。
空函式
想定義乙個什麼事也不做的空函式,可以用pass
語句:
def
nop():
pass
實際上pass
可以用來作為佔位符,比如現在還沒想好怎麼寫函式的**,就可以先放乙個pass
,讓**能執行起來。
pass
還可以用在其他語句裡,比如:
if age >=18:
pass
缺少了pass
,**執行就會有語法錯誤。
資料型別檢查
資料型別檢查可以用內建函式isinstance()
實現:
def
my_abs
(x):
ifnot
isinstance
(x,(
int,
float))
:raise typeerror(
'bad operand type'
)if x >=0:
return x
else
:return
-x
返回多個值
python的函式返回多值其實就是返回乙個tuple。
import math
defmove
(x, y, step, angle=0)
: nx = x + step * math.cos(angle)
ny = y - step * math.sin(angle)
return nx, ny
>>> 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)
原來返回值是乙個tuple!但是,在語法上,返回乙個tuple可以省略括號,而多個變數可以同時接收乙個tuple,按位置賦給對應的值,例如:
x, y, z =(1
,2,3
)print
(x, y, z)
#輸出結果:1 2 3
所以,python的函式返回多值其實就是返回乙個tuple。
小結
定義函式時,需要確定函式名和引數個數;
如果有必要,可以先對引數的資料型別做檢查;
函式體內部可以用return
隨時返回函式結果;
函式執行完畢也沒有return
語句時,自動return none
。
函式可以同時返回多個值,但其實就是乙個tuple。
09 函式定義及呼叫
makefile 中支援函式的概念 自定義函式示例 define func1 echo my name is 0 endef define func2 echo my name is 0 echo param one is 1 echo param one is 2 endef test call ...
自定義函式及函式呼叫
在論壇中,發現有的道友對自定義函式的呼叫存在這以下問題 1 自定義函式宣告 函式呼叫 函式實現概念混淆 2 形參和實參混淆 3 自定義函式引數的傳值方式混淆 傳來傳去都不知道傳的到底是什麼?接下來,我就重點圍繞道友們常見的問題,說一說 1 自定義函式宣告 函式呼叫 函式實現 比如 交換兩個數的值的自...
C 函式指標定義及呼叫
今天在一問一答審核題目的時候發現乙個題目的題幹是錯的,主要意思就是定義乙個函式指標,現在將修改後的結果放上來,給出定義函式指標的方法 日期 2013.5.8 功能 定義函式指標,並且呼叫 includeusing namespace std int max int a,int b 返回二者之中較大者...