目錄
- 專欄導讀
- 前言
- 🚀 功能特性
- 1. 全面的函數覆蓋
- 2. 多種查詢工具
- 3. 完整的測試驗證
- 🛠? 使用方法
- 基本使用
- 交互式查詢
- 運行測試
- 📚 支持的內置函數分類
- 數學運算 (13個)
- 類型轉換 (8個)
- 序列操作 (8個)
- 迭代器 (6個)
- 輸入輸出 (3個)
- 對象操作 (31個)
- 🎯 使用示例
- 示例1:查找字符串相關函數
- 示例2:學習數學函數
- 示例3:驗證函數功能
- 📊 項目統計
- 🔧 技術特點
- 🎓 學習建議
- 源代碼
- 🤝 貢獻指南
- 📄 許可證
專欄導讀
🌸 歡迎來到Python辦公自動化專欄—Python處理辦公問題,解放您的雙手
🏳??🌈 博客主頁:請點擊——> 一晌小貪歡的博客主頁求關注
👍 該系列文章專欄:請點擊——>Python辦公自動化專欄求訂閱
🕷 此外還有爬蟲專欄:請點擊——>Python爬蟲基礎專欄求訂閱
📕 此外還有python基礎專欄:請點擊——>Python基礎學習專欄求訂閱
文章作者技術和水平有限,如果文中出現錯誤,希望大家能指正🙏
?? 歡迎各位佬關注! ??
前言
這是一個全面的Python內置函數學習和參考工具集,包含了Python所有常用內置函數的詳細解析、演示代碼和交互式查詢功能。
🚀 功能特性
1. 全面的函數覆蓋
- 69個內置函數的詳細解析
- 按功能分類:數學運算、類型轉換、序列操作、迭代器、輸入輸出、對象操作等
- 每個函數包含:描述、語法、參數、返回類型、使用示例
2. 多種查詢工具
命令行工具 (interactive_builtin_explorer.py)
- 🔍 按名稱搜索函數
- 📂 按分類瀏覽函數
- 🎭 實時演示函數用法
- 💡 智能問答系統
- 📊 統計信息展示
GUI圖形界面 (gui_builtin_explorer.py)
- 🖱? 點擊式函數瀏覽
- 🎨 美觀的圖形界面
- 📋 實時函數詳情顯示
- ?? 一鍵代碼演示
- 🔍 搜索和分類過濾
3. 完整的測試驗證
- ? 函數信息完整性驗證
- 🎯 演示代碼正確性測試
- ? 基本功能測試
- 🚀 性能基準測試
- 📄 詳細測試報告
🛠? 使用方法
基本使用
運行:
交互式查詢
命令行版本:
# 運行命令行交互式工具
運行:gui_builtin_explorer.py
交互式命令:
search <函數名>
- 搜索特定函數category <分類名>
- 瀏覽分類函數demo <函數名>
- 演示函數用法ask <問題>
- 智能問答stats
- 顯示統計信息help
- 顯示幫助信息quit
- 退出程序
GUI圖形界面版本:
# 運行GUI圖形界面工具
運行:gui_builtin_explorer.py
GUI操作說明:
- 🔍 搜索功能: 在搜索框輸入函數名進行實時搜索
- 📂 分類瀏覽: 使用下拉菜單按分類篩選函數
- 🖱? 點擊查看: 點擊左側函數列表中的任意函數名
- 📖 詳情顯示: 右側自動顯示函數的詳細信息
- ?? 運行演示: 點擊"運行演示"按鈕查看代碼示例
- 📋 輸出查看: 在底部區域查看演示運行結果
運行測試
# 運行完整測試套件
運行:gui_builtin_explorer.py
📚 支持的內置函數分類
數學運算 (13個)
abs()
,divmod()
,max()
,min()
,pow()
,round()
,sum()
bin()
,hex()
,oct()
,complex()
,float()
,int()
類型轉換 (8個)
bool()
,bytes()
,str()
,list()
,tuple()
,set()
,dict()
,frozenset()
序列操作 (8個)
len()
,sorted()
,reversed()
,enumerate()
,zip()
,slice()
,range()
,memoryview()
迭代器 (6個)
iter()
,next()
,filter()
,map()
,all()
,any()
輸入輸出 (3個)
print()
,input()
,open()
對象操作 (31個)
type()
,isinstance()
,issubclass()
,hasattr()
,getattr()
,setattr()
,delattr()
dir()
,vars()
,locals()
,globals()
,callable()
,id()
,hash()
chr()
,ord()
,ascii()
,repr()
,format()
,eval()
,exec()
compile()
,classmethod()
,staticmethod()
,property()
,super()
object()
,bytearray()
,help()
,__import__()
,reload()
🎯 使用示例
示例1:查找字符串相關函數
運行:gui_builtin_explorer.py
示例2:學習數學函數
運行:gui_builtin_explorer.py
示例3:驗證函數功能
運行:gui_builtin_explorer.py
📊 項目統計
- 總函數數量: 69個
- 分類數量: 6個主要分類
- 代碼行數: 約2000行
- 測試用例: 100+個
- 文檔覆蓋率: 100%
🔧 技術特點
- 純Python實現:無外部依賴
- 面向對象設計:清晰的類結構
- 完整的文檔:每個函數都有詳細說明
- 實用的演示:可直接運行的示例代碼
- 全面的測試:確保代碼質量
- 交互式體驗:友好的用戶界面
🎓 學習建議
- 初學者:從基礎函數開始,如
print()
,len()
,type()
- 進階用戶:重點學習
map()
,filter()
,enumerate()
等高級函數 - 專業開發:掌握
getattr()
,hasattr()
,isinstance()
等反射函數
源代碼
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Python內置函數GUI瀏覽器基于tkinter的圖形界面工具,提供直觀的函數瀏覽和學習體驗。
用戶可以通過點擊函數名查看詳細信息和示例代碼。功能特性:
- 分類瀏覽內置函數
- 點擊查看函數詳細信息
- 實時代碼演示
- 搜索功能
- 美觀的GUI界面作者: AI助手
創建時間: 2024
"""import tkinter as tk
from tkinter import ttk, scrolledtext, messagebox
import sys
import io
from contextlib import redirect_stdout, redirect_stderr
from python_builtin_functions import PythonBuiltinFunctionsclass BuiltinFunctionGUI:"""Python內置函數GUI瀏覽器提供圖形界面來瀏覽和學習Python內置函數"""def __init__(self, root):self.root = rootself.parser = PythonBuiltinFunctions()self.current_function = None# 設置窗口self.setup_window()# 創建界面self.create_widgets()# 加載數據self.load_functions()def setup_window(self):"""設置主窗口"""self.root.title("Python內置函數大全 - GUI瀏覽器")self.root.geometry("1200x800")self.root.minsize(1000, 600)# 設置圖標和樣式try:self.root.iconbitmap(default="python.ico")except:pass # 如果沒有圖標文件就忽略# 配置樣式style = ttk.Style()style.theme_use('clam')def create_widgets(self):"""創建界面組件"""# 主框架main_frame = ttk.Frame(self.root, padding="10")main_frame.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))# 配置網格權重self.root.columnconfigure(0, weight=1)self.root.rowconfigure(0, weight=1)main_frame.columnconfigure(1, weight=2)main_frame.rowconfigure(1, weight=1)# 標題title_label = ttk.Label(main_frame, text="🐍 Python內置函數大全", font=('Arial', 16, 'bold'))title_label.grid(row=0, column=0, columnspan=3, pady=(0, 10))# 左側面板 - 函數列表self.create_function_list_panel(main_frame)# 右側面板 - 詳細信息self.create_detail_panel(main_frame)# 底部面板 - 代碼演示self.create_demo_panel(main_frame)def create_function_list_panel(self, parent):"""創建函數列表面板"""# 左側框架left_frame = ttk.LabelFrame(parent, text="📚 函數列表", padding="5")left_frame.grid(row=1, column=0, sticky=(tk.W, tk.E, tk.N, tk.S), padx=(0, 5))left_frame.columnconfigure(0, weight=1)left_frame.rowconfigure(2, weight=1)# 搜索框search_frame = ttk.Frame(left_frame)search_frame.grid(row=0, column=0, sticky=(tk.W, tk.E), pady=(0, 5))search_frame.columnconfigure(1, weight=1)ttk.Label(search_frame, text="🔍 搜索:").grid(row=0, column=0, padx=(0, 5))self.search_var = tk.StringVar()self.search_var.trace('w', self.on_search_change)search_entry = ttk.Entry(search_frame, textvariable=self.search_var)search_entry.grid(row=0, column=1, sticky=(tk.W, tk.E))# 分類選擇category_frame = ttk.Frame(left_frame)category_frame.grid(row=1, column=0, sticky=(tk.W, tk.E), pady=(0, 5))category_frame.columnconfigure(1, weight=1)ttk.Label(category_frame, text="📂 分類:").grid(row=0, column=0, padx=(0, 5))self.category_var = tk.StringVar()self.category_combo = ttk.Combobox(category_frame, textvariable=self.category_var,state="readonly")self.category_combo.grid(row=0, column=1, sticky=(tk.W, tk.E))self.category_combo.bind('<<ComboboxSelected>>', self.on_category_change)# 函數列表list_frame = ttk.Frame(left_frame)list_frame.grid(row=2, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))list_frame.columnconfigure(0, weight=1)list_frame.rowconfigure(0, weight=1)# 創建Treeviewself.function_tree = ttk.Treeview(list_frame, columns=('category',), show='tree headings')self.function_tree.heading('#0', text='函數名')self.function_tree.heading('category', text='分類')self.function_tree.column('#0', width=120)self.function_tree.column('category', width=100)# 滾動條tree_scroll = ttk.Scrollbar(list_frame, orient="vertical", command=self.function_tree.yview)self.function_tree.configure(yscrollcommand=tree_scroll.set)self.function_tree.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))tree_scroll.grid(row=0, column=1, sticky=(tk.N, tk.S))# 綁定選擇事件self.function_tree.bind('<<TreeviewSelect>>', self.on_function_select)def create_detail_panel(self, parent):"""創建詳細信息面板"""# 右側框架right_frame = ttk.LabelFrame(parent, text="📖 函數詳情", padding="5")right_frame.grid(row=1, column=1, sticky=(tk.W, tk.E, tk.N, tk.S), padx=5)right_frame.columnconfigure(0, weight=1)right_frame.rowconfigure(5, weight=1)# 函數名self.func_name_var = tk.StringVar(value="請選擇一個函數")func_name_label = ttk.Label(right_frame, textvariable=self.func_name_var,font=('Arial', 14, 'bold'), foreground='blue')func_name_label.grid(row=0, column=0, sticky=(tk.W, tk.E), pady=(0, 10))# 描述ttk.Label(right_frame, text="📝 描述:", font=('Arial', 10, 'bold')).grid(row=1, column=0, sticky=tk.W)self.description_var = tk.StringVar()description_label = ttk.Label(right_frame, textvariable=self.description_var,wraplength=400, justify=tk.LEFT)description_label.grid(row=2, column=0, sticky=(tk.W, tk.E), pady=(0, 10))# 語法ttk.Label(right_frame, text="?? 語法:", font=('Arial', 10, 'bold')).grid(row=3, column=0, sticky=tk.W)self.syntax_var = tk.StringVar()syntax_label = ttk.Label(right_frame, textvariable=self.syntax_var,font=('Consolas', 9), foreground='darkgreen',wraplength=400, justify=tk.LEFT)syntax_label.grid(row=4, column=0, sticky=(tk.W, tk.E), pady=(0, 10))# 參數說明ttk.Label(right_frame, text="📋 參數:", font=('Arial', 10, 'bold')).grid(row=5, column=0, sticky=(tk.W, tk.N))# 參數文本框param_frame = ttk.Frame(right_frame)param_frame.grid(row=6, column=0, sticky=(tk.W, tk.E, tk.N, tk.S), pady=(0, 10))param_frame.columnconfigure(0, weight=1)param_frame.rowconfigure(0, weight=1)self.param_text = scrolledtext.ScrolledText(param_frame, height=4, wrap=tk.WORD,font=('Arial', 9))self.param_text.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))# 返回類型ttk.Label(right_frame, text="?? 返回類型:", font=('Arial', 10, 'bold')).grid(row=7, column=0, sticky=tk.W)self.return_type_var = tk.StringVar()return_type_label = ttk.Label(right_frame, textvariable=self.return_type_var,font=('Arial', 9), foreground='purple')return_type_label.grid(row=8, column=0, sticky=(tk.W, tk.E), pady=(0, 10))def create_demo_panel(self, parent):"""創建代碼演示面板"""# 底部框架bottom_frame = ttk.LabelFrame(parent, text="🎭 代碼演示", padding="5")bottom_frame.grid(row=2, column=0, columnspan=2, sticky=(tk.W, tk.E, tk.N, tk.S), pady=(10, 0))bottom_frame.columnconfigure(0, weight=1)bottom_frame.rowconfigure(1, weight=1)# 按鈕框架button_frame = ttk.Frame(bottom_frame)button_frame.grid(row=0, column=0, sticky=(tk.W, tk.E), pady=(0, 5))# 運行演示按鈕self.demo_button = ttk.Button(button_frame, text="?? 運行演示", command=self.run_demo, state='disabled')self.demo_button.grid(row=0, column=0, padx=(0, 10))# 清空輸出按鈕clear_button = ttk.Button(button_frame, text="🗑? 清空輸出", command=self.clear_output)clear_button.grid(row=0, column=1)# 示例代碼標簽self.example_var = tk.StringVar()example_label = ttk.Label(button_frame, textvariable=self.example_var,font=('Consolas', 9), foreground='darkblue')example_label.grid(row=0, column=2, padx=(20, 0))# 輸出文本框output_frame = ttk.Frame(bottom_frame)output_frame.grid(row=1, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))output_frame.columnconfigure(0, weight=1)output_frame.rowconfigure(0, weight=1)self.output_text = scrolledtext.ScrolledText(output_frame, height=8, wrap=tk.WORD,font=('Consolas', 9), bg='#f0f0f0')self.output_text.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))def load_functions(self):"""加載函數數據"""# 獲取所有分類categories = set()for info in self.parser.functions_info.values():categories.add(info['category'])# 設置分類下拉框category_list = ['全部'] + sorted(list(categories))self.category_combo['values'] = category_listself.category_combo.set('全部')# 加載所有函數self.refresh_function_list()def refresh_function_list(self, search_text='', category='全部'):"""刷新函數列表Args:search_text: 搜索文本category: 選擇的分類"""# 清空現有項目for item in self.function_tree.get_children():self.function_tree.delete(item)# 過濾函數filtered_functions = []for func_name, info in self.parser.functions_info.items():# 分類過濾if category != '全部' and info['category'] != category:continue# 搜索過濾if search_text and search_text.lower() not in func_name.lower():continuefiltered_functions.append((func_name, info))# 按函數名排序filtered_functions.sort(key=lambda x: x[0])# 添加到樹形控件for func_name, info in filtered_functions:self.function_tree.insert('', 'end', text=func_name, values=(info['category'],), tags=(func_name,))def on_search_change(self, *args):"""搜索文本變化事件"""search_text = self.search_var.get()category = self.category_var.get()self.refresh_function_list(search_text, category)def on_category_change(self, event):"""分類選擇變化事件"""search_text = self.search_var.get()category = self.category_var.get()self.refresh_function_list(search_text, category)def on_function_select(self, event):"""函數選擇事件"""selection = self.function_tree.selection()if not selection:returnitem = selection[0]func_name = self.function_tree.item(item, 'text')if func_name in self.parser.functions_info:self.show_function_details(func_name)def show_function_details(self, func_name):"""顯示函數詳細信息Args:func_name: 函數名"""self.current_function = func_nameinfo = self.parser.functions_info[func_name]# 更新界面self.func_name_var.set(f"{func_name}()")self.description_var.set(info['description'])self.syntax_var.set(info['syntax'])self.return_type_var.set(info['return_type'])self.example_var.set(f"示例: {info['example']}")# 更新參數說明self.param_text.delete(1.0, tk.END)self.param_text.insert(1.0, info['parameters'])# 啟用演示按鈕self.demo_button.config(state='normal')def run_demo(self):"""運行函數演示"""if not self.current_function:returntry:# 捕獲輸出stdout_capture = io.StringIO()stderr_capture = io.StringIO()with redirect_stdout(stdout_capture), redirect_stderr(stderr_capture):self.parser._run_demonstration(self.current_function)stdout_output = stdout_capture.getvalue()stderr_output = stderr_capture.getvalue()# 顯示輸出self.output_text.insert(tk.END, f"\n=== {self.current_function}() 演示 ===\n")if stdout_output:self.output_text.insert(tk.END, stdout_output)if stderr_output:self.output_text.insert(tk.END, f"錯誤輸出:\n{stderr_output}")self.output_text.insert(tk.END, "\n" + "="*50 + "\n")# 滾動到底部self.output_text.see(tk.END)except Exception as e:self.output_text.insert(tk.END, f"\n演示運行出錯: {str(e)}\n")self.output_text.see(tk.END)def clear_output(self):"""清空輸出"""self.output_text.delete(1.0, tk.END)self.output_text.insert(1.0, "📋 輸出區域已清空,點擊'運行演示'查看函數演示結果\n")def main():"""主函數"""# 創建主窗口root = tk.Tk()# 創建應用app = BuiltinFunctionGUI(root)# 設置初始提示app.output_text.insert(1.0, "🎉 歡迎使用Python內置函數GUI瀏覽器!\n\n""📚 使用說明:\n""1. 在左側選擇函數分類或使用搜索功能\n""2. 點擊函數名查看詳細信息\n""3. 點擊'運行演示'查看函數使用示例\n""4. 在此區域查看演示輸出結果\n\n""💡 提示: 選擇一個函數開始探索吧!\n""="*50 + "\n")# 運行主循環root.mainloop()if __name__ == "__main__":main()
🤝 貢獻指南
歡迎提交問題和改進建議!如果發現函數信息有誤或需要添加新功能,請:
- 檢查現有的函數信息
- 運行測試確保代碼正確性
- 添加相應的測試用例
- 更新文檔說明
📄 許可證
本項目采用MIT許可證,可自由使用和修改。
開始探索Python內置函數的強大功能吧! 🐍?
-
希望對初學者有幫助;致力于辦公自動化的小小程序員一枚
-
希望能得到大家的【??一個免費關注??】感謝!
-
求個 🤞 關注 🤞 +?? 喜歡 ?? +👍 收藏 👍
-
此外還有辦公自動化專欄,歡迎大家訂閱:Python辦公自動化專欄
-
此外還有爬蟲專欄,歡迎大家訂閱:Python爬蟲基礎專欄
-
此外還有Python基礎專欄,歡迎大家訂閱:Python基礎學習專欄