python筆記之函數

函數初探

python在要寫出函數很簡單,通過關鍵字def即可寫出,簡單示例如下

def add(a, b):return a+b

以上即可以定義出一個簡單的函數:接收兩個變量a和b,返回a和b相加的結果,當然這么說也不全對,原因就是盡快python是強類型的語言,但同時也是動態類型的,示例中的函數對于入參沒有限制類型,若a和b都是數字自然返回和;若是str,則是拼接了

if __name__ == "__main__":add(1, 2) #3add('Hello', 'Python') #HelloPython

確定函數入參類型

要想在實際運行前就將函數的入參和返回類型確定下來,可以采用如下方法

def add(a:int, b:int) -> int:return a+b

但是,以上方法親測對應 add('Hello','Python')并無效果;這種情況下,就進行類型檢查吧

def add(a:int, b:int) -> int:if not isinstance(a, int) or not isinstance(b, int):raise ValueError("參數必須為整數")return a+b

裝飾器語法糖

日常開發中,做API開發的小伙伴應該都碰到過在做接口對接、聯調以及上線后故障排查時查找日志的情況,若是每個方法都進行日志打印(當然這種方法也不是不行)就過于重復了,python在很早的版本就引入了裝飾器(這里要和設計模式中的裝飾器模式區分下),具體實現如下

def logging(func):def wrapper(*args, **kwargs):print(f"調用函數{func.__name__},參數為:{args},{kwargs}")result = func(*args, **kwargs)print(f"函數{func.__name__}返回結果為:{result}")return resultreturn wrapper

這樣,在調用函數進行調試時,只需要加上@logging這個語法糖就行了

@logging
def add(a:int, b:int) -> int:if not isinstance(a, int) or not isinstance(b, int):raise ValueError("參數必須為整數")return a+b

魔法函數之__call__

class MyCall():def __init__(self, callable_obj):self.callable_obj = callable_objdef __call__(self, *args, **kwargs):print(f"調用函數{self.callable_obj.__name__},參數為:{args},{kwargs}")result = self.callable_obj(*args, **kwargs)print(f"函數{self.callable_obj.__name__}返回結果為:{result}")return resultf __name__ == "__main__":my_call = MyCall(add)my_call(4, 5)

類MyCall定義的魔法函數__call__,對于python解釋器而言,MyCall的對象就是一個可調用的對象(具有和def定義的函數同等可執行的效果了)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/73993.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/73993.shtml
英文地址,請注明出處:http://en.pswp.cn/web/73993.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【服務器操作指南 - GPU 使用與文件傳輸】輕松掌握 GPU 狀態查看和服務器文件傳輸技巧

0. 引言 在使用服務器時,高效管理 GPU 和文件傳輸是兩項不可或缺的技能。 本指南旨在幫助您快速掌握服務器環境下的 GPU 使用狀態監測方法,并簡要介紹如何在服務器之間進行文件傳輸操作。 1. 查看服務器上的 gpu 使用狀態 1.1 安裝 gpustat 這條指令…

0330-YYYY-MM-DD格式日期比較大小

最簡單的&#xff08;python&#xff09; from datetime import datetime def compare_time(time1,time2): time1_t datetime.strptime(time1,“%Y-%m-%d”) time2_t datetime.strptime(time2,“%Y-%m-%d”) if time1_t < time2_t: return time1_t elif time1_t > ti…

QFlightInstruments飛行儀表控件庫

QFlightInstruments 是一個開源的飛行儀表控件庫&#xff0c;專為基于 Qt 的應用程序設計。它提供了一系列仿真實飛機儀表的組件&#xff0c;適用于飛行模擬軟件、航空電子系統或任何需要高仿真飛行儀表顯示的項目。 主要功能 高仿真飛行儀表&#xff1a;包括空速表、高度表、…

VSCode 市場發現惡意擴展正在傳播勒索軟件!

在VSCode 市場中發現了兩個隱藏著勒索軟件的惡意擴展。其中一個于去年 10 月出現在微軟商店&#xff0c;但很長時間沒有引起注意。 這些是擴展ahban.shiba 和 ahban.cychelloworld&#xff0c;目前已從商店中刪除。 此外&#xff0c;ahban.cychelloworld 擴展于 2024 年 10 月…

國信華源攜AI+水利創新成果亮相第十五屆防汛抗旱信息化技術交流會

直擊展會現場 近日&#xff0c;以“人工智能賦能防汛抗旱 融合創新共御極端災害”為主題的第十五屆防汛抗旱信息化技術交流會在河南鄭州召開。作為水旱災害防御領域的專精企業&#xff0c;北京國信華源科技有限公司攜自主研發的入戶叫應預警系統及覆蓋防汛抗旱全鏈條的智慧化場…

MATLAB語言的鏈表反轉

MATLAB語言的鏈表反轉 鏈表是一種常見的數據結構&#xff0c;與數組相比&#xff0c;鏈表在插入和刪除操作方面具有更高的靈活性。然而&#xff0c;鏈表的一些操作&#xff0c;比如反轉鏈表&#xff0c;對一些初學者來說可能是一個挑戰。本篇文章將重點討論如何使用MATLAB語言…

Oracle數據庫數據編程SQL<2.2 DDL 視圖、序列>

目錄 一、Oracle 視圖(Views) &#xff08;一&#xff09; Oracle 視圖特點 &#xff08;二&#xff09;Oracle 視圖創建語法 關鍵參數&#xff1a; &#xff08;三&#xff09;Oracle 視圖類型 1、普通視圖 2、連接視圖&#xff08;可更新&#xff09; 3、對象視圖 4…

QtAdvancedStylesheets使用

QtAdvancedStylesheets 是一個基于 Qt Widgets 的樣式表(QSS)增強庫,允許開發者通過類似 CSS 的方式深度定制 Qt 應用程序的界面風格,支持動態主題切換、動畫效果和復雜控件樣式設計。 1. 核心功能 高級樣式表支持 使用 CSS-like 語法美化 Qt Widgets(如 QPushButton、Q…

QtAV入門

QtAV 是一個基于 FFmpeg 和 Qt 的高性能多媒體播放框架,提供強大的音視頻解碼、渲染和處理能力,適合開發跨平臺的播放器、視頻編輯和流媒體應用。 1. 核心功能 多格式支持 支持 H.264/H.265、VP9、AV1 等視頻編碼。 支持 MP3、AAC、Opus 等音頻編碼。 封裝格式:MP4、MKV、…

[ C++ ] | C++11 從左值引用到右值引用

&#xff08;目錄占位&#xff09; 1. 前言&#xff1a; C 11 是在 C 98 之后又一個變化比較大的標準。為C增加了很多東西&#xff0c;其中有一部分是有用的&#xff0c;有一部分是我自認為作用不是很大東西。這一章呢&#xff1f;我們就來說說C11我&#xff0c;我認為對性能…

基于MCU實現的電機轉速精確控制方案:軟件設計與實現

本文將詳細介紹一篇基于微控制器&#xff08;MCU&#xff09;的電機轉速精確控制的軟件方案。通過采樣PWM信號控制和ADC采樣技術&#xff0c;結合PID閉環控制算法&#xff0c;實現了電機轉速的高效、穩定調節。以下是軟件方案流程圖&#xff0c;下文將對其進行展開講解。 原圖太…

Jmeter觸發腳本備份

JMeter 在以下情況會觸發腳本備份&#xff1a; 手動保存測試計劃時&#xff1a;如果測試計劃有未保存的修改&#xff0c;當用戶手動保存測試計劃&#xff08;腳本&#xff09;時&#xff0c;JMeter 都會自動將當前腳本備份到${JMETER_HOME}/backups文件夾下。 關閉 JMeter 時…

AI人工智能-PyCharm的介紹安裝應用

下載與安裝 創建python項目 項目路徑&#xff1a;C:\Users\miloq\Desktop\python_project 配置環境 提前找到conda配置的python-base路徑 配置conda環境 運行項目 運行結果

Flink內存模型--flink1.19.1

Flink 的 JobManager 和 TaskManager 在內存分配上有不同的職責和結構。以下是兩者的內存分類及詳細說明&#xff1a; 一、JobManager 內存分類 JobManager 主要負責作業調度、協調&#xff08;如 Checkpoint 協調&#xff09;、資源管理等&#xff0c;其內存需求相對較低&…

華為數字化轉型-方法篇

1 方法篇-3-愿景驅動的數字化轉型規劃 1.2 業務戰略是數字化轉型的龍頭 1.3 數字時代&#xff0c;企業需要適時地調整業務戰略 1.3.1 引入數字化商業模式 引入數字化商業模式包括改變與客戶做生意的方式&#xff0c;改變銷售的渠道&#xff0c;基于產業互聯網重新定位與行 業…

常用的排序算法------練習4

1. 題目 2. 思路和題解 這道題是很經典的荷蘭國旗問題&#xff0c;根據題目意思&#xff0c;要對這個數組按照顏色排序&#xff0c;而此時現在的紅、白、藍三個顏色分別對應0&#xff0c;1&#xff0c;2&#xff0c;因此可以想到使用冒泡排序對該數組進行排序。 代碼如下&…

傳統神經網絡、CNN與RNN

在網絡上找了很多關于深度學習的資料&#xff0c;也總結了一點小心得&#xff0c;于是就有了下面這篇文章。這里內容較為簡單&#xff0c;適合初學者查看&#xff0c;所以大佬看到這里就可以走了。 話不多說&#xff0c;上圖 #mermaid-svg-Z3k5YhiQ2o5AnvZE {font-family:&quo…

1371. 貨幣系統-dp背包問題

給定 V種貨幣&#xff08;單位&#xff1a;元&#xff09;&#xff0c;每種貨幣使用的次數不限。 不同種類的貨幣&#xff0c;面值可能是相同的。 現在&#xff0c;要你用這 V種貨幣湊出 N 元錢&#xff0c;請問共有多少種不同的湊法。 輸入格式 第一行包含兩個整數 V 和 N…

python和Java的區別

Python和Java是兩種流行的編程語言&#xff0c;它們之間有一些重要的區別&#xff1a; 語法&#xff1a;Python是一種動態類型的腳本語言&#xff0c;語法簡潔明了&#xff0c;通常使用縮進來表示代碼塊。Java是一種靜態類型的編程語言&#xff0c;語法更為嚴格&#xff0c;需要…

正則化是什么?

正則化&#xff08;Regularization&#xff09;是機器學習中用于防止模型過擬合&#xff08;Overfitting&#xff09;的一種技術&#xff0c;通過在模型訓練過程中引入額外的約束或懲罰項&#xff0c;降低模型的復雜度&#xff0c;從而提高其泛化能力&#xff08;即在未見數據上…