python 主函数传参_Python函数传参详解

python 主函数传参_Python函数传参详解Python 中使用 def 来定义函数 依次是 def 函数名 括号 括号中的参数及结尾的冒号 另起一行缩进写函数体 函数的返回值用 return 语句返回 如 deffunc 参数 函数体 return 调用函数时会对传入的参数进行自动检查 包括参数的类型及参数的数量 如果不符合要求会抛出 TypeError 异常 参数的类型可分为 1 必选参数 2 默认参数 3 可变参数 4 关键字参数函数中的参

Python 中使用 def 来定义函数。依次是 def 函数名、括号、括号中的参数及结尾的冒号,另起一行缩进写函数体,函数的返回值用 return 语句返回。

如:

def func(参数):

函数体

return

调用函数时会对传入的参数进行自动检查,包括参数的类型及参数的数量,如果不符合要求会抛出 TypeError 异常。

参数的类型可分为:

1、必选参数

2、默认参数

3、可变参数

4、关键字参数

函数中的参数顺序一定要按以上顺序排列。

下面通过示例来更好的理解函数的各类参数:

定义函数:

>>> def func(hostname,os=’CentOS’,*role,other):

… print(‘Hostname : %s\nOS : %s\nRole : %s\nOther : %s’%(hostname,os,role,other))

>>>

其中 hostname 为必选参数,os为默认参数,role为可变参数,other为关键字参数。

*和分别为可变参数和关键字参数前缀,可变参数类型为列表或元组,关键字参数类型为字典。

演示:

1、

>>> func(‘web1’)

Hostname : web1

OS : CentOS

Role : ()

Other : {}

>>>

调用之前定义的 func 函数,并传入’web1’必选参数。在输出的结构中 OS 显示为默认的 CentOS。

2、

>>> func(‘web2′,’ubuntu’)

Hostname : web2

OS : ubuntu

Role : ()

Other : {}

>>>

调用之前定义的 func 函数,并传入’web2’必选参数,默认参数用 ‘ubuntu’ 替换。

3、

>>> func(‘db-1′,’redhat’,’MySQL’,’Redis’)

Hostname : db-1

OS : redhat

Role : (‘MySQL’, ‘Redis’)

Other : {}

>>>

调用之前定义的 func 函数,并传入必选参数,默认参数,以及两个可变参数。可变参数类型可以为列表或元组,如下:

>>> func(‘db-1′,’redhat’,*[‘MySQL’,’Redis’])

Hostname : db-1

OS : redhat

Role : (‘MySQL’, ‘Redis’)

Other : {}

>>>

>>> func(‘db-1’, ‘redhat’,*(‘MySQL’, ‘Redis’))

Hostname : db-1

OS : redhat

Role : (‘MySQL’, ‘Redis’)

Other : {}

>>>

当传入的可变参数是列表或元组时要在前加上*,对应的结果输出为元组。

4、

>>> func(‘db-3’, ‘redhat’,’MySQL’, ‘Redis’, ip=’172.16.100.3′)

Hostname : db-3

OS : redhat

Role : (‘MySQL’, ‘Redis’)

Other : {‘ip’: ‘172.16.100.3’}

>>>

>>> func(‘db-3’, ‘redhat’,’MySQL’, ‘Redis’, ip=’172.16.100.3′, m_port=3307)

Hostname : db-3

OS : redhat

Role : (‘MySQL’, ‘Redis’)

Other : {‘ip’: ‘172.16.100.3’, ‘m_port’: 3307}

>>>

>>> func(‘db-3’, ‘redhat’,’MySQL’, ‘Redis’, {‘ip’ : ‘172.16.100.3’, ‘m_port’ : 3307})

Hostname : db-3

OS : redhat

Role : (‘MySQL’, ‘Redis’)

Other : {‘ip’: ‘172.16.100.3’, ‘m_port’: 3307}

>>>

调用之前定义的 func 函数,并传入必选参数,默认参数,两个可变参数及关键字参数。

当传入的关键字参数是字典时要在前加上,对应的结果输出为字典。

当然以上测试中的列表、元组及字典可以先定义再引用:

>>> db_3_o={‘ip’ : ‘172.16.100.3’, ‘m_port’ : 3307}

>>> db_3_r=[‘MySQL’, ‘Redis’]

>>> func(‘db-3’, ‘redhat’,*db_3_r, db_3_o)

Hostname : db-3

OS : redhat

Role : (‘MySQL’, ‘Redis’)

Other : {‘ip’: ‘172.16.100.3’, ‘m_port’: 3307}

>>>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/178496.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午5:09
下一篇 2026年3月26日 下午5:10


相关推荐

  • win10下CUDA10 CUDNN的安装

    win10下CUDA10 CUDNN的安装

    2021年3月12日
    140
  • java1.8之supplier理解

    java1.8之supplier理解supplier 也是是用来创建对象的 但是不同于传统的创建对象语法 new 看下面代码 publicclassT privateintag TestSupplier System out println age publicstatic String args 创建 Supplier 容器

    2026年3月17日
    22
  • 导弹防御系统(dfs+最长上升子序列)

    导弹防御系统(dfs+最长上升子序列)原题连接/为了对抗附近恶意国家的威胁,R 国更新了他们的导弹防御系统。一套防御系统的导弹拦截高度要么一直 严格单调 上升要么一直 严格单调 下降。例如,一套系统先后拦截了高度为 3 和高度为 4 的两发导弹,那么接下来该系统就只能拦截高度大于 4 的导弹。给定即将袭来的一系列导弹的高度,请你求出至少需要多少套防御系统,就可以将它们全部击落。输入格式输入包含多组测试用例。对于每个测试用例,第一行包含整数 n,表示来袭导弹数量。第二行包含 n 个不同的整数,表示每个导弹的高度。当输入测试用例

    2022年8月8日
    12
  • 两数之和 II – 输入有序数组(Java实现)

    两数之和 II – 输入有序数组(Java实现)给定一个已按照升序排列的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值index1和index2,其中index1必须小于index2。

    2022年5月27日
    33
  • A站、B站、C站、D站、E站、F站、G站、H站、I站、J站、K站、L站、M站、N站、O站、P站、Q站、R站、S站、T站、U站、V站、W站、X站、Y站、Z站都是什么网站?Q站是什么?「建议收藏」

    A站、B站、C站、D站、E站、F站、G站、H站、I站、J站、K站、L站、M站、N站、O站、P站、Q站、R站、S站、T站、U站、V站、W站、X站、Y站、Z站都是什么网站?Q站是什么?「建议收藏」A站、B站、C站、D站、E站、F站、G站、H站、I站、J站、K站、L站、M站、N站、O站、P站、Q站、R站、S站、T站、U站、V站、W站、X站、Y站、Z站都是什么网站?A站https://www.acfun.cn/AcFun弹幕视频网-认真你就输啦(・ω・)ノ-(゜-゜)つロA站AcFunACG弹幕视频动画漫画游戏新番鬼畜东方初音DOTAMUGENAcFun是国内首家弹幕视频网站,这里有全网独家动漫新番,友好的弹幕氛围,有趣的UP主,好玩有科技..

    2022年8月23日
    12
  • 什么是JavaBean?它的作用是什么?

    什么是JavaBean?它的作用是什么?定义:JavaBean是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,属性名称符合这种模式,其他Java类可以通过自省机制(反射机制)发现和操作这些JavaBean的属性。JavaBean可分为两种:一种是有…

    2022年7月7日
    24

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号