python中partial用法

python中partial用法,第1张

概述应用典型的,函数在执行时,要带上所有必要的参数进行调用。然后,有时参数可以在函数被调用之前提前获知。这种情况下,一个函数有一个或多个参数预先就能用上,以便函数能用更少的参数进行调用。示例pyqt5中运用#通常在designer设计中想要触发按钮的事件我们可以用ui.pushButton

应用

典型的,函数在执行时,要带上所有必要的参数进行调用。然后,有时参数可以在函数被调用之前提前获知。这种情况下,一个函数有一个或多个参数预先就能用上,以便函数能用更少的参数进行调用。

示例pyqt5中运用

# 通常在designer设计中想要触发按钮的事件我们可以用ui.pushbutton.clicked.connect(click_success)  #click_success表示按钮事件触发的函数上面这样写的话,不能传参,所以我们需要换一种方式。# 方式一传参可以通过lambda函数# 方式二传参通过functools中的partial,偏函数来处理ui.pushbutton.clicked.connect(partial(click_success, ui)) # 参数1触发的函数名,参数2要传递的参数

示例

from functools import partialdef add(a,b):  return a+bresult = partial(add, 10)add(19)# 使用partial先为函数add传递了一个参数,随后真正调用的时候又传递了一个函数结果为:29

示例 汇率转换

# huilv.py文件,由ui文件生成# -*- Coding: utf-8 -*-# Form implementation generated from reading ui file 'huilv.ui'## Created by: PyQt5 UI code generator 5.15.2## WARNING: Any manual changes made to this file will be lost when pyuic5 is# run again.  Do not edit this file unless you kNow what you are doing.from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_MainWindow(object):    def setupUi(self, MainWindow):        MainWindow.setobjectname("MainWindow")        MainWindow.resize(800, 600)        self.centralWidget = QtWidgets.QWidget(MainWindow)        self.centralWidget.setobjectname("centralWidget")        self.label = QtWidgets.QLabel(self.centralWidget)        self.label.setGeometry(QtCore.QRect(50, 20, 131, 51))        self.label.setlinewidth(1)        self.label.settextformat(QtCore.Qt.autoText)        self.label.setobjectname("label")        self.lineEdit = QtWidgets.QlineEdit(self.centralWidget)        self.lineEdit.setGeometry(QtCore.QRect(40, 80, 113, 20))        self.lineEdit.setobjectname("lineEdit")        self.label_2 = QtWidgets.QLabel(self.centralWidget)        self.label_2.setGeometry(QtCore.QRect(160, 80, 51, 20))        self.label_2.setobjectname("label_2")        self.pushbutton = QtWidgets.QPushbutton(self.centralWidget)        self.pushbutton.setGeometry(QtCore.QRect(190, 80, 75, 23))        self.pushbutton.setobjectname("pushbutton")        self.lineEdit_2 = QtWidgets.QlineEdit(self.centralWidget)        self.lineEdit_2.setGeometry(QtCore.QRect(280, 80, 113, 20))        self.lineEdit_2.setobjectname("lineEdit_2")        self.label_3 = QtWidgets.QLabel(self.centralWidget)        self.label_3.setGeometry(QtCore.QRect(400, 80, 54, 16))        self.label_3.setobjectname("label_3")        MainWindow.setCentralWidget(self.centralWidget)        self.menubar = QtWidgets.QMenubar(MainWindow)        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 22))        self.menubar.setobjectname("menubar")        MainWindow.setMenubar(self.menubar)        self.statusbar = QtWidgets.QStatusbar(MainWindow)        self.statusbar.setobjectname("statusbar")        MainWindow.setStatusbar(self.statusbar)        self.retranslateUi(MainWindow)        QtCore.QMetaObject.connectSlotsByname(MainWindow)    def retranslateUi(self, MainWindow):        _translate = QtCore.QCoreApplication.translate        MainWindow.setwindowTitle(_translate("MainWindow", "MainWindow"))        self.label.setText(_translate("MainWindow", "汇率转换器"))        self.label_2.setText(_translate("MainWindow", "USD"))        self.pushbutton.setText(_translate("MainWindow", "转换"))        self.label_3.setText(_translate("MainWindow", "CNY"))# main.py 主程序。启动,编写函数。实现ui和主程序的分离import sysimport huilvfrom functools import partialfrom PyQt5.QtWidgets import QApplication, QMainWindowdef turn_result(ui):    # 获取文本框中的内容    input_txt = ui.lineEdit.text().strip()    # 运算结果    if input_txt.isdigit():        result = float(input_txt) * 6.7        # 将结果添加到结果输入框中        ui.lineEdit_2.setText(str(result))if __name__ == '__main__':    app = QApplication(sys.argv)    mywin = QMainWindow()    ui = huilv.Ui_MainWindow()    ui.setupUi(mywin)    mywin.show()    # 使用partial可以给函数传递参数    ui.pushbutton.clicked.connect(partial(turn_result, ui))    sys.exit(app.exec_())
总结

以上是内存溢出为你收集整理的python中partial用法全部内容,希望文章能够帮你解决python中partial用法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1188568.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存