真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

Python3如何實現(xiàn)減少可調用對象的參數(shù)個數(shù)-創(chuàng)新互聯(lián)

小編給大家分享一下Python3如何實現(xiàn)減少可調用對象的參數(shù)個數(shù),希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

增城ssl適用于網站、小程序/APP、API接口等需要進行數(shù)據傳輸應用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

問題

一個被其他python代碼使用的callable對象,可能是一個回調函數(shù)或者是一個處理器,由于其參數(shù)太多,導致調用時出錯。

解決方案

如果需要減少某個函數(shù)的參數(shù)個數(shù),可以使用functools.partial() 。 partial() 函數(shù)允許給一個或多個參數(shù)設置固定的值,減少接下來被調用時的參數(shù)個數(shù)。 假設一個函數(shù)有很多參數(shù):

def func(a, b, c, d):
  print(a, b, c, d)

使用 partial() 函數(shù)來固定某些參數(shù)值:

from functools import partial

s1 = partial(func, 1) # a = 1
print(s1(2, 3, 4))
(1, 2, 3, 4)

s2 = partial(func, d=100)  # d = 100
print(s2(1, 2, 3))
(1, 2, 3, 100)

s3 = partial(func, 1, 2, d=100) # a = 1, b = 2, d = 100
print(s3(3))
(1, 2, 3, 100)

可以看出 partial()函數(shù)固定某些參數(shù),并返回一個新的callable對象。這個新的callable接受未賦值的參數(shù), 然后跟之前已經賦值過的參數(shù)合并起來,最后將所有參數(shù)傳遞給原始函數(shù)。

討論

假設有一個點的列表points,表示(x, y)坐標元組?,F(xiàn)在需要以點(4, 3)為基點,根據點和基點之間的距離來排序points中所有的點。

定義一個函數(shù),用來計算兩點之間的距離:

import math

points = [(1, 2), (3, 4), (5, 6), (7, 8)]
pt = (4, 3)

def distance(p1, p2):
  x1, y1 = p1
  x2, y2 = p2
  return math.hypot(x2 - x1, y2 - y1)

列表的 sort() 排序方法,可以接受一個關鍵字參數(shù),設置自定義排序的邏輯, 但是它只能接受一個單個參數(shù)的函數(shù),很顯然,distance()函數(shù)不符合條件,通過使用 partial() 函數(shù)可以解決這個問題:

points.sort(key=partial(distance, pt))
print(points)
[(3, 4), (1, 2), (5, 6), (7, 8)]

很多時候 partial() 能實現(xiàn)的效果,其實,lambda表達式也能實現(xiàn)。

points.sort(key=lambda x: distance(pt, x))
print(points)
[(3, 4), (1, 2), (5, 6), (7, 8)]

看完了這篇文章,相信你對“Python3如何實現(xiàn)減少可調用對象的參數(shù)個數(shù)”有了一定的了解,如果想了解更多相關知識,歡迎關注創(chuàng)新互聯(lián)成都網站設計公司行業(yè)資訊頻道,感謝各位的閱讀!

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。


文章名稱:Python3如何實現(xiàn)減少可調用對象的參數(shù)個數(shù)-創(chuàng)新互聯(lián)
文章分享:http://weahome.cn/article/ccpssd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部