Python函数默认参数设置的具体方法

作者:小刘学安卓 时间:2021-03-13 08:19:07 

我们知道,在调用函数时如果不指定某个参数,Python 解释器会抛出异常。为了解决这个问题,Python 允许为参数设置默认值,即在定义函数时,直接给形式参数指定一个默认值。这样的话,即便调用函数时没有给拥有默认值的形参传递参数,该参数可以直接使用定义函数时设置的默认值。

Python 定义带有默认值参数的函数,其语法格式如下:

def 函数名(...,形参名,形参名=默认值):
   代码块

注意,在使用此格式定义函数时,指定有默认值的形式参数必须在所有没默认值参数的最后,否则会产生语法错误。

下面程序演示了如何定义和调用有默认参数的函数:

#str1没有默认参数,str2有默认参数
def dis_str(str1,str2 = "http://jb51.net/python/"):
print("str1:",str1)
print("str2:",str2)

dis_str("http://jb51.net/shell/")
dis_str("http://jb51.net/java/","http://jb51.net/golang/")

运行结果为:

str1: http://jb51.net/shell/
str2: http://jb51.net/python/
str1: http://jb51.net/java/
str2: http://jb51.net/golang/

上面程序中,dis_str() 函数有 2 个参数,其中第 2 个设有默认参数。这意味着,在调用 dis_str() 函数时,我们可以仅传入 1 个参数,此时该参数会传给 str1 参数,而 str2 会使用默认的参数,如程序中第 6 行代码所示。

当然在调用 dis_str() 函数时,也可以给所有的参数传值(如第 7 行代码所示),这时即便 str2 有默认值,它也会优先使用传递给它的新值。
同时,结合关键字参数,以下 3 种调用 dis_str() 函数的方式也是可以的:

dis_str(str1 = "http://jb51.net/shell/")
dis_str("http://jb51.net/java/",str2 = "http://jb51.net/golang/")
dis_str(str1 = "http://jb51.net/java/",str2 = "http://jb51.net/golang/")

再次强调,当定义一个有默认值参数的函数时,有默认值的参数必须位于所有没默认值参数的后面。因此,下面例子中定义的函数是不正确的:

#语法错误
def dis_str(str1="http://jb51.net/python/",str2,str3):
pass

显然,str1 设有默认值,而 str2 和 str3 没有默认值,因此 str1 必须位于 str2 和 str3 之后。

有读者可能会问,对于自己自定义的函数,可以轻易知道哪个参数有默认值,但如果使用 Python 提供的内置函数,又或者其它第三方提供的函数,怎么知道哪些参数有默认值呢?

Pyhton 中,可以使用“函数名.__defaults__”查看函数的默认值参数的当前值,其返回值是一个元组。以本节中的 dis_str() 函数为例,在其基础上,执行如下代码:

print(dis_str.__defaults__)

程序执行结果为:

('http://jb51.net/python/',)

来源:https://blog.csdn.net/liuqinhou/article/details/129846987

标签:Python,函数,默认参数
0
投稿

猜你喜欢

  • Trie树_字典树(字符串排序)简介及实现

    2022-02-22 23:18:23
  • SQL恢复master数据库方法 只有mdf文件的数据库如何恢复

    2024-01-17 20:17:53
  • 使用py2exe在Windows下将Python程序转为exe文件

    2022-08-14 10:07:07
  • Chrome插件开发系列一:弹窗终结者开发实战

    2024-04-29 13:42:04
  • python重要函数eval多种用法解析

    2023-02-08 20:16:46
  • python实现自动化上线脚本的示例

    2021-02-01 05:14:49
  • 使用Requests库来进行爬虫的方式

    2022-07-20 18:00:33
  • 使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)

    2023-05-04 05:09:51
  • 教你怎么用Python操作MySql数据库

    2024-01-13 06:46:48
  • Python 实现选择排序的算法步骤

    2023-04-01 18:28:53
  • Python ord函数()案例详解

    2023-06-25 04:50:28
  • 用python实现学生管理系统

    2021-05-22 12:13:31
  • Python基础之变量的相关知识总结

    2021-05-09 00:16:06
  • Python_LDA实现方法详解

    2021-06-29 11:43:18
  • Go语言error的设计理念及背景演化详解

    2024-02-09 22:09:19
  • python实现selenium网络爬虫的方法小结

    2023-01-13 03:43:38
  • Python Celery异步任务队列使用方法解析

    2023-05-18 02:34:53
  • Python爬虫逆向分析某云音乐加密参数的实例分析

    2022-05-25 20:33:14
  • Python实现提取Excel指定关键词的行数据

    2022-09-01 10:15:59
  • node.js用fs.rename强制重命名或移动文件夹的方法

    2024-05-13 10:05:37
  • asp之家 网络编程 m.aspxhome.com