欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python3 實(shí)現(xiàn)減少可調(diào)用對(duì)象的參數(shù)個(gè)數(shù)

 更新時(shí)間:2019年12月20日 16:03:05   作者:惑也  
今天小編就為大家分享一篇Python3 實(shí)現(xiàn)減少可調(diào)用對(duì)象的參數(shù)個(gè)數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

問(wèn)題

一個(gè)被其他python代碼使用的callable對(duì)象,可能是一個(gè)回調(diào)函數(shù)或者是一個(gè)處理器,由于其參數(shù)太多,導(dǎo)致調(diào)用時(shí)出錯(cuò)。

解決方案

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

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

使用 partial() 函數(shù)來(lái)固定某些參數(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ù),并返回一個(gè)新的callable對(duì)象。這個(gè)新的callable接受未賦值的參數(shù), 然后跟之前已經(jīng)賦值過(guò)的參數(shù)合并起來(lái),最后將所有參數(shù)傳遞給原始函數(shù)。

討論

假設(shè)有一個(gè)點(diǎn)的列表points,表示(x, y)坐標(biāo)元組?,F(xiàn)在需要以點(diǎn)(4, 3)為基點(diǎn),根據(jù)點(diǎn)和基點(diǎn)之間的距離來(lái)排序points中所有的點(diǎn)。

定義一個(gè)函數(shù),用來(lái)計(jì)算兩點(diǎn)之間的距離:

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

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

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

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

以上這篇Python3 實(shí)現(xiàn)減少可調(diào)用對(duì)象的參數(shù)個(gè)數(shù)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • pycharm配置pyqt5-tools開(kāi)發(fā)環(huán)境的方法步驟

    pycharm配置pyqt5-tools開(kāi)發(fā)環(huán)境的方法步驟

    這篇文章主要介紹了pycharm配置pyqt5-tools開(kāi)發(fā)環(huán)境的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • Anaconda安裝pytorch及配置PyCharm 2021環(huán)境

    Anaconda安裝pytorch及配置PyCharm 2021環(huán)境

    小編使用的是python3.8版本,為了防止訪問(wèn)量過(guò)大導(dǎo)致http連接失敗,所以采用本地安裝,具體安裝方法本文給大家詳細(xì)介紹,在文章底部給大家提到了PyCharm 2021配置環(huán)境的方法,感興趣的朋友一起看看吧
    2021-06-06
  • 手把手教你使用TensorFlow2實(shí)現(xiàn)RNN

    手把手教你使用TensorFlow2實(shí)現(xiàn)RNN

    本文主要介紹了TensorFlow2實(shí)現(xiàn)RNN,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • Python列表切片操作實(shí)例探究(提取復(fù)制反轉(zhuǎn))

    Python列表切片操作實(shí)例探究(提取復(fù)制反轉(zhuǎn))

    在Python中,列表切片是處理列表數(shù)據(jù)非常強(qiáng)大且靈活的方法,本文將全面探討Python中列表切片的多種用法,包括提取子列表、復(fù)制列表、反轉(zhuǎn)列表等操作,結(jié)合豐富的示例代碼進(jìn)行詳細(xì)講解
    2024-01-01
  • 如何使用Python多線程測(cè)試并發(fā)漏洞

    如何使用Python多線程測(cè)試并發(fā)漏洞

    這篇文章主要介紹了如何使用Python多線程測(cè)試并發(fā)漏洞,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • python實(shí)現(xiàn)單機(jī)五子棋對(duì)戰(zhàn)游戲

    python實(shí)現(xiàn)單機(jī)五子棋對(duì)戰(zhàn)游戲

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)單機(jī)五子棋對(duì)戰(zhàn)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Python自定義裝飾器原理與用法實(shí)例分析

    Python自定義裝飾器原理與用法實(shí)例分析

    這篇文章主要介紹了Python自定義裝飾器原理與用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python自定義裝飾器,帶參數(shù)的裝飾器等概念、原理、實(shí)現(xiàn)方法及相關(guān)使用技巧,需要的朋友可以參考下
    2018-07-07
  • 解決pyecharts在jupyter notebook中使用報(bào)錯(cuò)問(wèn)題

    解決pyecharts在jupyter notebook中使用報(bào)錯(cuò)問(wèn)題

    這篇文章主要介紹了解決pyecharts在jupyter notebook中使用報(bào)錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • 利用Python繪制好看的玫瑰花圖

    利用Python繪制好看的玫瑰花圖

    玫瑰花圖是節(jié)理統(tǒng)計(jì)方式之一,方法簡(jiǎn)便,形象醒目,比較清楚地反映出主要節(jié)理的方向,有助于分析區(qū)域構(gòu)造。本文將用Python繪制好看的玫瑰花圖,感興趣的可以了解一下
    2022-05-05
  • 教你掌握分布式訓(xùn)練PyTorch?DDP到Accelerate到Trainer

    教你掌握分布式訓(xùn)練PyTorch?DDP到Accelerate到Trainer

    這篇文章主要為大家介紹了教你掌握分布式訓(xùn)練PyTorch?DDP到Accelerate到Trainer
    2023-02-02

最新評(píng)論