1、呼叫函式
呼叫函式的時候,如果傳入的引數數量不對,會報typeerror的錯誤。
如果傳入的引數數量是對的,但引數型別不能被函式所接受,也會報typeerror的錯誤,並且給出錯誤資訊
2、資料型別轉換
【練習】請利用python內建的hex()函式把乙個整數轉換成十六進製制表示的字串:
# -*- coding: utf-8 -*-
n1 = 255
print (hex(n1))
run:0xff
【練習】請定義乙個函式quadratic(a, b, c),接收3個引數,返回一元二次方程 ax2
ax^2
ax2 b±
b2−4
ac2a
\frac}
2a−b±b
2−4a
c計算平方根可以呼叫math.sqrt()
函式
# -*- coding: utf-8 -*-
import math
def quadratic(a, b, c):
if b*b > 4*a*c:
result1=(-b + math.sqrt(b*b-4*a*c))/(2*a)
result2=(-b - math.sqrt(b*b-4*a*c))/(2*a)
return result1,result2
elif b*b < 4*a*c:
print("該方程無解")
else:
print("該方程只有乙個解")
result=(-b + math.sqrt(b*b-4*a*c))/(2*a)
return result
# 測試:
print('quadratic(2, 3, 1) =', quadratic(2, 3, 1))
print('quadratic(1, 3, -4) =', quadratic(1, 3, -4))
if quadratic(2, 3, 1) != (-0.5, -1.0):
print('測試失敗')
elif quadratic(1, 3, -4) != (1.0, -4.0):
print('測試失敗')
else:
print('測試成功')
run:
quadratic(2, 3, 1) = (-0.5, -1.0)
quadratic(1, 3, -4) = (1.0, -4.0)
測試成功
1、位置引數
power(x, n)
函式有兩個引數:x和n,這兩個引數都是位置引數,呼叫函式時,傳入的兩個值按照位置順序依次賦給引數x和n。
2、預設引數
定義預設引數要牢記一點:預設引數必須指向不變物件!
def add_end(l=none):
if l is none:
l =
return l
3、可變引數
定義可變引數和定義乙個list或tuple引數相比,僅僅在引數前面加了乙個*號。在函式內部,引數numbers接收到的是乙個tuple,因此,函式**完全不變。但是,呼叫該函式時,可以傳入任意個引數,包括0個引數。
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
4、關鍵字引數
而關鍵字引數允許你傳入0個或任意個含引數名的引數,這些關鍵字引數在函式內部自動組裝為乙個dict。關鍵字引數可以擴充套件函式的功能。比如,在person函式裡,我們保證能接收到name和age這兩個引數,但是,如果呼叫者願意提供更多的引數,我們也能收到。
def person(name, age, **kw):
print('name:', name, 'age:', age, 'other:', kw)
5、命名關鍵字引數
6、引數組合
【練習】以下函式允許計算兩個數的乘積,請稍加改造,變成可接收乙個或多個數並計算乘積:
# -*- coding: utf-8 -*-
def mul(product, *numbers):
for n in numbers:
product *= n
return product
或
def mul(firstnum, *numbers):
product = firstnum
for n in numbers:
product *= n
return product
test:
#測試
print('mul(5) =', mul(5))
print('mul(5, 6) =', mul(5, 6))
print('mul(5, 6, 7) =', mul(5, 6, 7))
print('mul(5, 6, 7, 9) =', mul(5, 6, 7, 9))
if mul(5) != 5:
print('測試失敗!')
elif mul(5, 6) != 30:
print('測試失敗!')
elif mul(5, 6, 7) != 210:
print('測試失敗!')
elif mul(5, 6, 7, 9) != 1890:
print('測試失敗!')
else:
try:
mul()
print('測試失敗!')
except typeerror:
print('測試成功!')
python異常處理
run:
mul(5) = 5
mul(5, 6) = 30
mul(5, 6, 7) = 210
mul(5, 6, 7, 9) = 1890
測試成功!
【學習記錄】
當初始沒有引數時,不會報錯。不符合要求。
def mul(*numbers):
product = 1
for n in numbers:
product = product * n
return product
# tests that pass
assert mul(5) == 5
assert mul(5, 6) == 30
# tests that fail!
try:
mul()
assert false, "expected a typeerror exception to be raised"
except typeerror:
pass
原因:
your initial implementation ofmul()
will accept a call with no arguments.
【練習】漢諾塔的移動
# -*- coding: utf-8 -*-
def move(n, a, b, c):
if n == 1:
print(a, '-->', c)
else:
move(n - 1, a, c, b)
print(a, '-->', c)
move(n - 1, b, a, c)
move(3, 'a', 'b', 'c')
run:
a --> c
a --> b
c --> b
a --> c
b --> a
b --> c
a --> c
Python學習筆記 函式
1.基本呼叫 python 中的函式使用關鍵字 def 來建立乙個函式,正如其他語言中的函式一樣,有函式名,引數,以及返回值。函式的引數不用指定型別,return 可以在任何地方出現,表示函式結束,如果沒有返回內容則預設返回值為none。乙個簡單的無引數,無返回值的hello world def h...
python學習筆記 函式
def fun object,param1,param2 none print type object tuple,呼叫時預設的所有實參全部轉化為tuple傳遞給object fun 1,2,3,4,5,6,7,param1 8 指定param1的呼叫實參,param2引數呼叫預設值函式內可訪問全域...
python學習筆記 函式
建立函式 def myfirstfuntion 函式具體內容 呼叫函式 直接輸入函式面名及引數。def myfirstfnuncyion syntaxerror invalid syntax def myfirstfunction print 我愛你,qt syntaxerror eol while...