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

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}

>>>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值