亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python3如何實現減少可調用對象的參數個數

發布時間:2021-05-20 14:35:02 來源:億速云 閱讀:177 作者:小新 欄目:開發技術

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

問題

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

解決方案

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

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

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

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()函數固定某些參數,并返回一個新的callable對象。這個新的callable接受未賦值的參數, 然后跟之前已經賦值過的參數合并起來,最后將所有參數傳遞給原始函數。

討論

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

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

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

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

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

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

看完了這篇文章,相信你對“Python3如何實現減少可調用對象的參數個數”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黄梅县| 郁南县| 长宁区| 马龙县| 浑源县| 信宜市| 岢岚县| 宁晋县| 横山县| 启东市| 和平县| 浮山县| 梓潼县| 河东区| 宁波市| 屯昌县| 鞍山市| 巨野县| 咸丰县| 双流县| 东山县| 邳州市| 沙河市| 会昌县| 富裕县| 宁陵县| 黄山市| 新宁县| 唐海县| 综艺| 若尔盖县| 定日县| 化州市| 河西区| 临沧市| 三门峡市| 柳河县| 洛隆县| 兰溪市| 杂多县| 长泰县|