Day22:引數註解
1.函式定義的弊端
- python是動態語言,變數隨時可以被賦值,且能賦值為不同的型別,動態語言很靈活,但是這種特性也是弊端;
- 難發現:由於不做任何型別檢查,直到執行期問題才顯現出來,或者線上執行時才能暴露出問 題 ;
- 難使用:函式的使用者看到函式的時候,並不知道你的函式的設計,並不知道應該傳入什麼類 型的資料;
- 解決辦法:可以通過增加文件Documentation String(幫助文件)和使用函式引數註解兩種辦法來解決這個弊端;
2.什麼是引數註解
def show(x: int, y: int) -> int:
'''
:param x:
:param y:
:return:
'''
return x * y
print(show(10,20)) # 200
- 函式中間使用 ‘’’ ‘’'包裹起來的註釋說明就是引數註解;
3.使用引數註解的好處
-
引數註解可以避免動態語音的弊端;
-
可以對函式的引數進行型別註解和對函式的返回值進行型別註解;
-
引數註解只對函式引數做一個輔助的說明,並不對函式引數進行型別檢查;
4.Functools模組的使用
# 示例1
import inspect
def add(x:int, y:int, *args,**kwargs) -> int:
return x + y
sig = inspect.signature(add)
print(sig) # (x: int, y: int, *args, **kwargs) -> int
print(sig.parameters) # OrderedDict([('x', <Parameter "x: int">), ('y', <Parameter "y: int">), ('args', <Parameter "*args">), ('kwargs', <Parameter "**kwargs">)])
# 示例2: partial偏函式
from functools import partial
def add(x, y):
return x + y
partial_add = partial(add, x=1)
result = partial_add(y=2)
print(result) #輸出: 3
# lru_cache
from functools import lru_cache
import time
@lru_cache()
def add(x, y):
time.sleep(10)
return x + y
print(add(1,2))
print(add(2,3))
print(add(2,3))
print(add(2,3))
-
指那些作用於函式或者返回其它函式的函式,通常只要是可以被當做函式呼叫的物件就是這個模組的目標;
-
lru_cache裝飾器的作用就是把計算結果儲存在記憶體中,下一次有同一個引數傳入的話就不會再次進行計算;
相關文章
- 引數校驗註解
- SwaggerAPI註解詳解,以及註解常用引數配置SwaggerAPI
- Mybatis引數傳遞&註解開發MyBatis
- SpringBoot魔法堂:@MatrixVariable引數註解使用詳解Spring Boot
- beego註解路由中各個引數解釋Go路由
- Java SuppressWarnings 註解抑制警告引數記錄Java
- gin 註解路由,自動引數繫結工具路由
- Python函式引數和註解是什麼Python函式
- SpringBoot 介面引數解密的實現方法(使用註解)Spring Boot解密
- Spring Validation-用註解代替程式碼引數校驗Spring
- OpenFeign @PathVariable需註明引數名稱
- SpringBoot原始碼解讀系列三——引導註解Spring Boot原始碼
- ajax 引數詳解
- OGG引數詳解
- Nginx編譯引數大全 configure引數中文詳解Nginx編譯
- Dockerfile - 引數與詳解Docker
- lsblk命令引數詳解
- Flink Checkpoint 引數詳解
- 函式引數詳解函式
- 函式、引數、解構函式
- tar命令引數詳解
- 【超實用攻略】SpringBoot + validator 輕鬆實現全註解式的引數校驗Spring Boot
- IDEA自定義類註釋和方法註釋(自定義groovyScript方法實現多行引數註釋)Idea
- pg_settings引數詳解
- 常用的 wget 引數詳解wget
- find 命令的引數詳解
- Oracle GoldenGate常用引數詳解OracleGo
- oracle rac 核心引數詳解Oracle
- variables_order引數詳解
- SQL*Plus Set引數詳解SQL
- Prometheus hashmod 配置引數詳解Prometheus
- Day22 集合,ArrayList,泛型泛型
- Day22 Spring test模組Spring
- cad標註樣式設定引數 怎麼設定cad標註樣式
- ansible.cfg 配置引數詳解
- JavaScript 函式引數解構物件JavaScript函式物件
- Pandas read_csv 引數詳解
- Nginx 配置檔案引數詳解Nginx