本篇目錄:
一、 函數的介紹
二、 函數的定義
三、 定義函數的三種類型
四、 函數調用的階段
五、 Return傳回值
==========================================================================
一、 函數的介紹
1. 什麼是函數?為什麼要有函數?
1.1. 具備一個特定功能的工具(類比)>>>函數
1.2 事先準備工具的過程(類比)>>>函數的定義
1.3 工具直接拿來使用,使用其特定的功能>>>函數的調用
1.4 沒有函數的話,程式會有以下缺點:
a. 組織結構不清晰,可讀性差
b. 管理維護難度大,擴充性差
c. 代碼備援,重複
#1 定義函數
def print_sym(sym*count):
print(sym*count)
def print_msg(msg):
print('\033[35m%s\033[0m' %msg)
二、函數的定義
1. 函數的文法結構
1.1 函數的結構,def是define的意思,代表定義
def 函數名(參數1,參數2,參數3。。。):
'''
此處用來增加文檔描述,闡述函數的功能,增加可讀性
'''
代碼塊部分
1.2 函數可以通過函數名直接調用,函數的命名必須能準備反應函數的功能
1.3 代碼塊部分是函數功能實作的代碼
注意點:
# 函數和變量都是占用記憶體位址,過程相似,但是函數并不是變量
三、定義函數的三種類型
1. 帶參函數
1.1 參數是外部調用函數的部分傳入函數的值
1.2 函數中的代碼塊邏輯中需要函數調用者傳入值
def max2(x,y):
'''
這是一個比較大小的函數,傳回較大的數
'''
if x >y:
print(x)
else:
print(y)
#調用函數max2
max2(100, 200)
def auth(username,pwd):
'''
該函數用來驗證使用者輸入的使用者名和密碼
'''
if username == inp_name and pwd == inp_pwd:
print('登陸成功!')
else:
print('登陸失敗')
#調用auth()
auth()
def interactive():
'''
該函數用來傳回使用者輸入的使用者名和密碼
'''
inp_name = input('Username>>>:').strip()
inp_pwd = input('Password>>>:').strip()
return inp_name, inp_pwd
def auth(inp_name, pwd):
'''
該函數用來驗證return的結果是元組類型
'''
res = interactive()
x = res[0]
y = res[1]
print(x)
print(y)
2. 無參函數
1.1 函數本身定義無參數,調用者也不需要傳入參數
def print():
'''
該函數用來展示無參函數
'''
print('\033[35m--------------------\033[0m')
print('--------------不需要傳入參數------------')
1.2 函數體的代碼邏輯不需要函數的調用者傳入值
def auth():
'''
該函數用來展示無參函數
'''
inp_name = input('Username>>>:').strip()
inp_pwd = input('Password>>>:').strip()
if username == inp_name and pwd == inp_pwd:
print('登陸成功!')
else:
print('登陸失敗')
#調用auth()
auth()
3. 空函數
什麼事都不做的函數就是一個空函數。
即便是一個空函數,它也會有如下屬性:
['__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__doc__', '__format__', '__get__', '__getattribute__', '__globals__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name']
# Tips:當我們在寫程式的過程中,遇到一個卡殼的地方,我們可以在函數末尾加一個pass,暫時的跳過思維的斷路的地方。
四、 函數調用的階段
1. 調用守則: 必須先定義再調用
定義階段不執行代碼,隻檢測文法
2. 調用方式:函數名+括号
調用階段根據函數名找到函數的記憶體位址,執行函數的代碼體
五、 Return傳回值
1. 什麼時候該有傳回值
函數代碼體執行完畢後,需要傳回一個結果給調用者
2. Return傳回值的三種情況
2.1 當函數代碼塊中沒有Return,傳回為None
2.2 如果傳回值後跟一個值,就傳回值本身
2.3 return傳回的值用逗号分割,傳回多個值,組成一個元組(類型)
2.4 如果函數體内有多個Return,則傳回第一Return的值(Return代表函數結束)
# return傳回值沒有類型限制
# 函數内可以寫多個return,但是隻到第一個return就結束
# return是函數結束的标志