在編程的語境下,“函數”這個詞的意思是對一系列語句的組合,這些語句共同完成一種運算。
定義函數的時候,你要給這個函數指定一個名字,另外還要寫出進行運算的語句。定義完成后,就可以通過函數名來“調用”函數。
一,函數調用
一個函數調用的例子:
>>> type(42)
<class 'int'>
這個函數的名字就是tpye,括號里面的表達式叫做函數的參數,這個函數的結果是返回參數的類型。
一般來說,函數都要“傳入”一個參數,“返回”一個結果。結果也被叫做返回值。Python提供了 一些轉換數值類型的函數。
比如
(1)int這個函數就可以把值轉換成整形,但不是什么都能轉的, 遇到不能轉換的就會報錯了,如下所示:
>>> int('42')
42
>>> int('Hello')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'Hello'
int這個函數能把浮點數轉成整形,但不是很完美,小數部分就都給砍掉了。
>>> int(3.1415927)
3
>>> int(-2.1314)
-2
(2)float能把整形和字符串轉變成浮點數
>>> float(32)
32.0
>>> float('3.1415927')
3.1415927
(3)str可以把參數轉變成字符串
>>> str(32)
'32'
>>> str(3.1415927)
'3.1415927'
二,數學函數
Python內置了一個數學模塊,這一模塊提供了絕大部分常用的數學函數。模塊就是一系列相關函數的集合成的文件。
在使用模塊中的函數之前,必須先要導入這個模塊,使用導入語句import:
>>> import math
這個語句建立了一個模塊對象,名字叫做math。把這個模塊對象顯示一下,得到與之相關的信息:
>>> math
<module 'math' from '/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/lib-dynload/math.cpython-37m-darwin.so'>
模塊對象包含了一些已經定義好的函數和變量。指定模塊名和函數名,要用點.(英文輸入法)來連接模塊名和函數名,比如下方的math.pi
例子:對弧度值計算正弦值。
通過變量名你應該能推測出正弦以及其他的三角函數 (比如余弦、正切等等)都要用弧度值作為參數。所以要把角度的值從度轉換成弧度,方法 就是除以180然后再乘以圓周率π
>>> degrees = 45
>>> radians = degrees / 180.0 * math.pi
>>> math.sin(radians) #計算正弦值
0.7071067811865475
math.pi這個表達式從數學模塊中得到π的一個大概精確到15位的近似值,存成一個浮點數。
也可以試着把2的平方根除以二,可以得到與上面一致的結果。
>>> math.sqrt(2) / 2.0
0.7071067811865476
畫一個三角形,45度角兩直角邊是單位1,斜邊必然是2的平方根了,對應的正弦余弦也都是這個值(0.7071067811865476)。
三,組合
一門編程語言最有用的功能莫過於能夠用一個個小模塊來拼接創作。例如函數的參數可以是任何一種表達式,包括代數運算符:
>>> x = math.sin(degrees / 360.0 * 2 * math.pi)
再或者函數的調用本身也可以作為參數,如下的math.log()
>>> x = math.exp(math.log(x+1))
值得注意的是,一個聲明語句的左邊必須是變量名,任何其他的表達式放到等號左邊都會導致語法錯誤。
>>> hours = minutes * 60
>>> minutes * 60 = hours
File "<stdin>", line 1
SyntaxError: can't assign to operator
結束。