Python內置函數(shù)之def function_name函數(shù)解讀
在 Python 中,def function_name是定義函數(shù)的基本語法。函數(shù)是組織好的、可重復使用的代碼塊,用于執(zhí)行單一或相關聯(lián)的任務。
下面詳細介紹函數(shù)的定義、參數(shù)、返回值及實戰(zhàn)案例。
1. 函數(shù)定義語法
def function_name(parameters):
"""函數(shù)文檔字符串(可選)"""
# 函數(shù)體
return value # 返回值(可選)
關鍵要素
def:關鍵字,聲明函數(shù)。function_name:函數(shù)名,遵循標識符規(guī)則(小寫字母、下劃線)。parameters(參數(shù)):函數(shù)接收的輸入,可選。return:語句,用于返回結果,可省略(默認返回None)。
2. 參數(shù)類型
函數(shù)參數(shù)分為以下幾類:
位置參數(shù)(Positional Arguments)
def add(a, b):
return a + b
result = add(3, 5) # a=3, b=5,按位置傳遞參數(shù)
默認參數(shù)(Default Arguments)
def greet(name, msg="Hello"):
return f"{msg}, {name}!"
print(greet("Alice")) # 使用默認值:"Hello, Alice!"
print(greet("Bob", "Hi")) # 覆蓋默認值:"Hi, Bob!"
*可變參數(shù)(args)
接收任意數(shù)量的位置參數(shù),打包為元組。
def sum_all(*args):
return sum(args)
print(sum_all(1, 2, 3)) # 輸出: 6
print(sum_all(1, 2, 3, 4)) # 輸出: 10
** 關鍵字參數(shù)(kwargs)
接收任意數(shù)量的關鍵字參數(shù),打包為字典。
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="Alice", age=30)
# 輸出:
# name: Alice
# age: 30
混合使用
def complex_func(a, b=10, *args, **kwargs):
print(f"a={a}, b=, args={args}, kwargs={kwargs}")
complex_func(1, 2, 3, 4, x=5, y=6)
# 輸出: a=1, b=2, args=(3, 4), kwargs={'x': 5, 'y': 6}
3. 返回值
函數(shù)可通過return語句返回值,支持返回多個值(元組形式)。
def calculate(a, b):
return a + b, a - b, a * b # 返回多個值
sum_result, diff_result, prod_result = calculate(5, 3)
print(sum_result) # 輸出: 8
print(diff_result) # 輸出: 2
print(prod_result) # 輸出: 15
4. 實戰(zhàn)案例
案例 1:字符串反轉
def reverse_string(s):
return s[::-1]
print(reverse_string("hello")) # 輸出: "olleh"
案例 2:判斷素數(shù)
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
print(is_prime(7)) # 輸出: True
print(is_prime(8)) # 輸出: False
案例 3:文件讀取
def read_file(filename):
try:
with open(filename, 'r') as f:
return f.read()
except FileNotFoundError:
return None
content = read_file("data.txt")
if content:
print(content)
else:
print("文件不存在")
案例 4:高階函數(shù)(函數(shù)作為參數(shù))
def apply_operation(func, a, b):
return func(a, b)
def multiply(x, y):
return x * y
result = apply_operation(multiply, 3, 4)
print(result) # 輸出: 12
5. 注意事項
作用域:函數(shù)內部定義的變量為局部變量,外部無法訪問。
def test():
x = 10
print(x) # 報錯:NameError
默認參數(shù)的陷阱:默認參數(shù)只在函數(shù)定義時初始化一次,避免使用可變對象(如列表)作為默認參數(shù)。
def append_value(value, lst=[]): # 錯誤示例
lst.append(value)
return lst
print(append_value(1)) # 輸出: [1]
print(append_value(2)) # 輸出: [1, 2](非預期)
正確做法:
def append_value(value, lst=None):
if lst is None:
lst = []
lst.append(value)
return lst
文檔字符串(Docstring):建議為函數(shù)添加文檔說明,通過__doc__屬性訪問。
def my_func():
"""這是一個示例函數(shù)"""
pass
print(my_func.__doc__) # 輸出: "這是一個示例函數(shù)"
6. 進階技巧
Lambda 函數(shù)(匿名函數(shù))
適用于簡單的單行函數(shù):
square = lambda x: x ** 2 print(square(5)) # 輸出: 25
裝飾器(Decorators)
用于擴展函數(shù)功能:
def timer_decorator(func):
import time
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
print(f"函數(shù)運行時間: {time.time() - start_time}秒")
return result
return wrapper
@timer_decorator
def heavy_computation(n):
return sum(i*i for i in range(n))
heavy_computation(1000000) # 輸出運行時間
總結
函數(shù)是 Python 編程的核心,通過合理定義參數(shù)、返回值和函數(shù)體,可以實現(xiàn)代碼復用和模塊化。掌握位置參數(shù)、默認參數(shù)、可變參數(shù)、關鍵字參數(shù)的用法,以及返回值的處理,是編寫高效 Python 代碼的基礎。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
解決plt.imshow顯示cv2.imread讀取的圖像有色差發(fā)藍的四種方法問題
本文主要介紹了解決plt.imshow顯示cv2.imread讀取的圖像有色差發(fā)藍的四種方法問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-04-04
Pycharm如何設置默認請求頭和切換python環(huán)境
這篇文章主要介紹了Pycharm如何設置默認請求頭和切換python環(huán)境問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06
Python3.0中普通方法、類方法和靜態(tài)方法的比較
本文主要講解了Python3中普通方法、類方法和靜態(tài)方法的區(qū)別與比較,費了作者可大的勁整理了,希望對大家有用2019-05-05
從零學python系列之新版本導入httplib模塊報ImportError解決方案
在使用新版python打開舊版本代碼的時候,可能會有些報錯或者不兼容的情況出現(xiàn),今天我們就來分析其中的一種情況2014-05-05

