昊虹AI笔记网

 找回密码
 立即注册
搜索
查看: 822|回复: 0
收起左侧

Python调用某函数时如果想跳过某个可选参数怎么办?

[复制链接]

249

主题

252

帖子

976

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
976
昊虹君 发表于 2022-12-23 13:33 | 显示全部楼层 |阅读模式
Python调用某函数时如果想跳过某个可选参数怎么办?

使用Python时,我们经常会遇到调用某函数时想跳过某个可选参数的情况。

比如在调用OpenCV的函数resize()时,就会遇到这个需求。

OpenCV的函数resize()的原型如下:
  1. dst=cv.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])
复制代码

函数resize()各参数的意义大家可以参考博文 https://www.hhai.cc/thread-183-1-1.html

现在我们要用到第四个和第五个参数fx和fy,而不想用第三个参数dst。
为什么不想用第三个参数dst?
因为其返回值就是第三个参数dst,如果这里我填写第三个参数dst,那我就得事先初始化一个dst,那样操作起来就复杂一些了。

那么怎样才能做用第四个和第五个参数fx和fy,而不用第三个参数dst呢?
答案其实很简单,第三个参数不填,然后第三个参数之后的参数明确写上参数名就行了。
这样说大家可能还是不清楚,举个例子大家就知道了。
[Python] 纯文本查看 复制代码
# !/usr/bin/env python
# -*- coding: utf-8 -*-
# OpenCV的版本为4.1

import cv2 as cv
import sys

src = cv.imread("F:/material/images/P0005-BaoXiaofeng.jpg")
# 判断图片是否读取成功
if src is None:
    print('Error,Failed to read image.')
    sys.exit()
cv.imshow('src', src)

x_scale = 0.5
y_scale = 0.5

src_resize = cv.resize(src, (0, 0), fx=x_scale, fy=y_scale)
cv.imshow('src_resize', src_resize)

cv.waitKey(0)
cv.destroyAllWindows()

该代码的作用是把原图缩小为原来的0.5倍。
对于函数resize()的调用,我并没有填上第三个参数,第四个参数和第五个参数在填写时,我是写上了参数名的,比如代码中的 fx=x_scale 和  fy=y_scale。
代码运行结果如下:

总结一下:
Python的语法支持函数调用传参时指定参数名,这样我们不想传的可选参数我们就可以不传,并且这个参数名在Pycharm中还会以暗红标亮,如下图所示:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|昊虹AI笔记网 ( 蜀ICP备2024076726 )

GMT+8, 2024-9-8 11:53 , Processed in 0.021400 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表