- 機械工程師Python編程:入門、實戰與進階
- (西)安琪兒·索拉·奧爾巴塞塔
- 491字
- 2024-09-10 16:13:08
2.1.5 嵌套函數
本書中用到的另一個技巧是在函數內部定義函數。這樣做有兩個很好的理由:一是,它允許內部函數訪問外部函數的所有信息,而不需要將這些信息作為參數傳遞;二是,內部函數可以定義一些對外部世界不可見的邏輯。
使用常規語法即可在函數中定義函數。讓我們看一個例子:

這里,inner_fn函數是在outer_fn函數內部定義的,因此,它不能從主函數的外部訪問,只能從其內部訪問。inner_fn函數可以訪問outer_fn中定義的所有內容,包括函數參數。
當函數的邏輯變得復雜,且可以被分解時,在函數內部定義子函數很有用。當然,我們也可以將函數分解成同一級別的簡單函數。在這種情況下,為了表明這些子函數不從模塊外部導入和使用,我們需要遵循Python的標準,將函數名稱寫成兩個下劃線開頭的形式:

注意,Python沒有訪問修飾符(公共、專用……),因此,在模塊頂層(即Python文件)編寫的所有代碼都可以被導入和使用。
記住,這兩個下劃線只是表示一個我們應該遵守的約定。實際上并沒有阻止我們導入和使用這些代碼。在導入以兩個下劃線開頭的函數時,我們必須明白,該函數的作者并不希望其被外部引用;如果調用該函數,結果可能在意料之外。通過在被調用的函數內部定義子函數,我們可以避免這種行為。
推薦閱讀
- Spring Cloud Alibaba核心技術與實戰案例
- The Modern C++ Challenge
- Visual C++串口通信開發入門與編程實踐
- 騰訊iOS測試實踐
- iOS 9 Game Development Essentials
- JMeter 性能測試實戰(第2版)
- 編寫高質量代碼:改善Python程序的91個建議
- Scratch趣味編程:陪孩子像搭積木一樣學編程
- OpenStack Networking Essentials
- 區塊鏈國產化實踐指南:基于Fabric 2.0
- Unity Android Game Development by Example Beginner's Guide
- SCRATCH編程課:我的游戲我做主
- Professional JavaScript
- 產品架構評估原理與方法
- C# 10核心技術指南