5.1Python函數(一)
阿新 • • 發佈:2019-02-02
int 技術 return args 內存大小 tle 參數 cimage mark
目錄
- 目錄
- 前言
- (一)函數的基本知識
- (二)函數的基本使用
- ==1.函數的簡單定義==
- ==2.傳值函數==
- (3)輸出效果
- ==3.不定長函數==
- ==4.缺省函數==
- ==5.函數的傳值過程==
- ==6.具有返回值函數==
- ==7.函數的使用說明==
目錄
前言
分模塊思想,分任務編程,是編程的一大重要思維,其中的實現,函數就擔當了一個重要角色,今天我們就來學習Python的初級函數。
(一)函數的基本知識
(1)函數的優點
- 體積小,減少內存大小,冗余度小。
- 重用性強,可重復利用。
- 維護方便。
- 分解任務,簡化邏輯,使代碼更加模塊化。
(2)函數的分類
- 內建函數
- 三方函數
- 自定義函數
(二)函數的基本使用
==1.函數的簡單定義==
(1)語法說明
def 函數名():
? 函數體
(2)源代碼
# 定義一個簡單函數
def test():
print(2**2)
print(2**3)
print(2**4)
# 調用函數
test()
(3)輸出效果
==2.傳值函數==
(1)語法說明
定義語法:
def 函數名(var1,var2,……)
? 函數體
調用的時候,有兩種方式:
- 順序調用,要求實參與形參一一對應。
- 關鍵字調用,可以不按照順序調用。
(2)源代碼
# 定義一個帶參數的函數
def test(var1, var2):
print(var1+var2)
print(var1**2+var2**2)
print(var1**3+var2**3)
# 順序調用帶參數的函數
print("順序調用")
test(1, 2)
# 關鍵字調用帶參數函數
print("關鍵調用")
test(var2=2, var1=1)
(3)輸出效果
==3.不定長函數==
(1)語法說明
當形參為下面兩種形式的時,為不定長參數
- *args --- 接收為元組類型, 只要使用星號就可以,名字沒關系,習慣用args而已。
- **kwargs ---接收為字典類型。其傳值時,必須是關鍵字傳值。
註意:裝包與拆包
- 裝包:args與kwargs 就是表示整個元組與字典的整體,叫裝包
- 拆包:*args 與 **kwargs 表示元組和字典的每個元素,叫拆包
(2)源代碼
# 定義不定長的參數- *args 接收的是元組類型
def test1(*args):
print(args, type(args))
print(*args)
# 定義不定長的參數- *args 接收的是字典類型
def test2(**kwargs):
print(kwargs, type(kwargs))
# 輸出keyword
print(*kwargs)
# 使用value,不能打印出來,不過可以使用
# 而且形參與實參的keyword一樣,其實就是關鍵字調用
test3(**kwargs)
def test3(a, b, c):
print(a)
print(b)
print(c)
# 調用參數,並接收的是 元組
test1(1, 2, 3)
# 調用參數,並接收的是 字典
test2(a="zsj", b=18, c="m")
(3)輸出效果
==4.缺省函數==
(1)語法說明
在定義函數的時候,給形參賦值,就是缺省函數,所賦的值便是默認值,
def test(name="me")
而在調用的時候,可以傳入參數,也可以不傳入參數。
傳入參數時,以所傳的參數優先。
不傳入參數時,為默認值。
(2)源代碼
# 定義缺省參數
def test(name="zyg"):
print(name)
# 不傳入參數, 默認值
test()
# 傳入參數,優先值是傳入的值
test("me")
(3)輸出效果
==5.函數的傳值過程==
(1)語法說明
在python裏函數的傳值:都是==引用傳遞==
- 值傳遞(從實參復制一個副本)傳遞給形參
- 引用傳遞(直接把實參的id)傳給形參
Python的可變數據類型與不可變數據類型
- 可變數據類型:value值改變,id值不改變。(列表,字典)
- 不可變類型:value值改變,id值隨之改變。(數值類型,字符串類型,布爾類型,元組類型)
Python裏函數是否可以改變實參內容問題
- 若實參是可變數據類型,則可以實參內容
- 若實參是不可變數據類型,則不可以實參內容
(2)可變類型的實例
# 定義一個函數,用id()來判斷其是值傳遞,還是地址傳遞?
def test(num):
print(id(num))
num[1] = 5
print(num)
print(id(num))
list1 = [1, 2, 3]
print(id(list1))
test(list1)
print("最後的id", id(list1))
print("最後的值", list1)
(3)不可變類型的實例
# 定義一個函數,用id()來判斷其是值傳遞,還是地址傳遞?
def test(num):
print(id(num))
num = 5
print(num)
print(id(num))
number = 1
print(id(number))
test(number)
print("最後的id", id(number))
print("最後的值", number)
==6.具有返回值函數==
(1)語法說明
當我們需要函數處理過後,返回一個結果值。可以使用
return 結果值
結果值:可以是元組類型,列表類型,拆包後的數據
(2)源代碼
# 定義一個具有返回值的函數
def test(a, b):
mysum = a + b
mysub = a - b
return (a, b)
n1 = 4
n2 = 2
sum_1, sub_1 = test(n1, n2)
print(sum_1)
print(sub_1)
(3)輸出效果
==7.函數的使用說明==
(1)說明:
函數的說明都有一個標準的寫法,才能調用help查看
def 函數名():
? """
? 功能:xxxxx
? var1:
? var2:
? ....
? return xxxx
? """
查看幫助可以用:help(函數名) ,註意是函數名,不是函數調用。
(2)源代碼
# 定義一個具有返回值的函數
def test(a, b=1):
"""
功能:該函數實現兩個值的加減,並返回結果。
:param a: 參與運算的一個值,數字類型,不可選,無默認值
:param b: 參與運算的另一個值,數字類型,可選,默認值為1
:return: 和與差的結果,元組類型。例如 (1, 2)
"""
mysum = a + b
mysub = a - b
return (a, b)
# 查看幫助
help(test)
(3)輸出效果
作者:Mark
日期:2019/02/02 周六
5.1Python函數(一)