1. 程式人生 > >[Python3入門與進階]8 函式

[Python3入門與進階]8 函式

目錄

8-1認識函式

函式的作用

函式的作用
1 功能性
2 隱藏細節
3 避免編寫重複的程式碼
4 組織程式碼(面向物件)

round()函式

ptint()
a = 1.12386
print (round(a,2))

優化後函式

#優化後函式
a = 1.12386
reslt = round(a,2)
print (reslt)

round(a,x)為內建函式, x 為保留幾位(四捨五入)

檢視內建函式用法help()

>>> 
help(round) Help on built-in function round in module builtins: round(...) round(number[, ndigits]) -> number Round a number to a given precision in decimal digits (default 0 digits). This returns an int when called with one argument, otherwise the same type as the number. ndigits may be negative. >>>

可以通過help()方式檢視內建函式用法

8-2 函式的定義及執行特點

函式基本結構

#函式基本結構
def funcanme(parameter_list):
    pass
    #4個空格縮排
def funcanme (parameter_list)
關鍵字定義函式 函式名稱 引數列表 冒號
  • 引數列表可以沒有
  • reture value(如果沒有return,預設Value為None

函式定義舉例

#實現兩個數字相加
#列印輸入的引數
def add(x,y)
    result
= x+y return result def print_code(code) print(code) a = add(1,1) b = print_code('Python') print (a) print (b) print(a,b)
#列印結果
>>>Python
3 None
  • 因為在 print_code 沒有定義return,所有返回None

8-3 如何讓函式返回多個結果

def damage(slill1,skill2):
    damage1 = skill1 * 3
    damage2 = skill2 * 2 +10
    return damage1, damage2

skill1_damage, skill2_damage = damage(3, 6)
#序列解包
print(skill1_damage, skill2_damage)

8-4 序列解包與鏈式賦值

序列解包

a = 1
b = 2
c = 3

a, b, c = 1, 2, 3

d = 1, 2, 3
print(type(d))
#序列解刨為以上過程相反 a, b, c = d

a, b, c = [1, 2, 3]  #序列
d = 1 ,2 ,3
a, b, c = d
#輸出
<class 'tuple'>
  • d 的型別顯示為一個序列
  • 元素解刨元素個數要相等

鏈式賦值

  a = 1
  b = 1
  c = 1
  as
  a =b =c =1
  as
  a, b, c =1, 1, 1
#輸出
 1 1 1
  • 以上a,b, c 值都等於 1

8-5 必須引數與關鍵字引數

函式是Python最基本的資料單元

引數的型別

  • 必須引數(必須為每個值賦值)
  • 形式引數 (函式定義的過程中)
  • 實際引數(呼叫函式的過程中,傳遞給引數列表 )

關鍵字引數(函式的呼叫上有所區別)

def add(x, y)
    result = x + y
    return result

c = ddd(y=3, x=2)
#用 c 記錄呼叫 add 函式的過程,關鍵字引數,明確指定 形參 賦值
  • 提高程式碼的可讀性,不需要強制記憶函式。

8-6 預設引數

程式碼例項

def print_student_files(name, gender, age, college):
    print('我叫' + name)
    print('我今年' + str(age) + '歲')
    print('我是' + gender +'生')
    print('我在' + college + '上學')

print_student_files('小萌',  '男', 18,  '人民路小學')

使用程式碼預設引數

def print_student_files(name, gender='男', age='18', college='人民路小學'):
    print('我叫' + name)
    print('我今年' + str(age) + '歲')
    print('我是' + gender +'生')
    print('我在' + college + '上學')

print_student_files('小萌')
print_student_files('小樂','女',16)     #更改性別,年齡
print_student_files('小明',age = 16)    #只更改年齡
print_student_files('小明', age = 16, college = '光明小學')     #更改年齡,學校

print_student_files('小明',gender='女', 16, college = '光明小學')  
#錯誤寫法,必須引數和預設引數不可混用

預設引數注意點

  • 預設引數後不可以加非預設引數
  • python 3.6