python如何让实参变成可选的?

 时间:2026-02-15 14:14:06

1、定义函数时,位置参数看似非常便利,但在使用过程中可能会出错。如图,我们定义一个获取完整人名的函数,包含姓、氏跟中间名。代码示例如下:

def funcA(first_name,middle_name,last_name):

    full_name = first_name + " " + middle_name + " " + last_name

    print(full_name.title())

python如何让实参变成可选的?

2、函数定义好之后,以Thomas Alva Edison为例向函数传递3个参数以调用函数。代码示例如下:

funcA("thomas","edison","alva")

python如何让实参变成可选的?

3、接着,我们以Albert Einstein为例向函数传递2个参数以调用函数,此时运行出错了。出错的原因是因为函数有3个参数而实际人名只有2个参数的话,这个函数就不能用了。代码示例如下:

funcA("albert","einstein")

python如何让实参变成可选的?

1、为了避免人名只有2个参数时上述函数出错的问题,我们考虑使用关键字参数,将middle_name放在最后面。(注意:关键字参数必须放在所有的位置参数后面!)

def funcA(first_name,last_name,middle_name=""):

    full_name = first_name + " " + middle_name + " " + last_name

    print(full_name.title())

python如何让实参变成可选的?

2、定义好上述函数之后,同样先向函数传递3个参数,代码运行之后完全没有问题。代码示例如下:

funcA("thomas","edison","alva")

python如何让实参变成可选的?

3、接着,我们再向函数传递2个参数,代码运行之后好像也没有问题。代码示例如下:

funcA("albert","einstein")

python如何让实参变成可选的?

4、其实,这种方法下传递2个参数之后的执行结果虽然没有出错,但仔细研究一下会发现,这个代码其实是有些许问题的。如图,最终打印时两个参数之间的间隔是有两个空格的,而非一个空格。

python如何让实参变成可选的?

1、既然第二种方法运行并不出错,只是格式上有些问题,我们可以考虑将代码再进行优化一下。考虑加入if语句,当middle_name为True时,直接执行刚才的操作;当middle_name为False时,将middle_name删去。代码示例如下:

def funcA(first_name,last_name,middle_name=""):

    if middle_name:

        full_name = first_name + " " + middle_name + " " + last_name

    else:

        full_name = first_name + " " + last_name

    print(full_name.title())

python如何让实参变成可选的?

2、定义好上述函数之后,同样先向函数传递3个参数,代码运行之后完全没有问题。代码示例如下:

funcA("thomas","edison","alva")

python如何让实参变成可选的?

3、接着,我们再向函数传递2个参数,代码运行之后也完全没有问题。代码示例如下:

funcA("albert","einstein")

python如何让实参变成可选的?

  • python元组的创建与删除
  • 如何使用python语言中的类实现方法的重写
  • VS如何新建数据集
  • PHP教程 学生类的定义与创建对象
  • 如何使用pycharm给python文件添加默认信息
  • 热门搜索
    云南旅游路线图 同程旅游网站官网 俄罗斯旅游签证 国内旅游攻略 泰国旅游指南 临沂旅游景点大全 湖北恩施旅游攻略 湖南张家界旅游攻略 洞头旅游攻略 呼伦贝尔草原旅游攻略