Python學習筆記 函式

2021-10-22 14:06:27 字數 4055 閱讀 3726

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...