函数式编程之参数详解


1、默认参数
#默认参数特点:调用函数的时候,默认参数非必须传递

def conn(host,port=3306):
pass

conn("10.214.135.151") 可以
conn("10.214.135.151",1521) 也可以
conn("10.214.135.151",port = 1521) 也可以
conn(host = "10.214.135.151",port = 1521) 也可以


2、多个参数
#*args:接受N个位置参数,不是关键字参数,转换成元组形式,参数的返回值都是元组

def test(*args):
print(args)

test(1,2,3,4,5,5) 可以
test(*[1,2,4,5,5]) # args=tuple([1,2,3,4,5]) 也可以
结果:
(1, 2, 3, 4, 5, 5)


延伸:位置参数和多个参数组合
def test1(x,*args):
print(x)
print(args)

test1(1,2,3,4,5,6,7)
结果:
1
(2, 3, 4, 5, 6, 7)


3、参数为字典形式
接受N个关键字参数,转换成字典的方式。参数的返回值是字典

def test2(**kwargs):
print(kwargs)
print(kwargs['name'])
print(kwargs['age'])
# print(kwargs['sex'])

test2(name='alex',age=8,sex='F')
test2(**{'name':'alex','age':8})
结果:
{'name': 'alex', 'age': 8, 'sex': 'F'}
alex
8
{'name': 'alex', 'age': 8}
alex
8

延伸1:位置参数和字典参数组合
def test3(name,**kwargs):
print(name)
print(kwargs)

test3('alex',age=18,sex='m')

结果:
alex
{'age': 18, 'sex': 'm'}


延伸2:默认参数和字典参数组合。默认参数必须自字典参数前面
def test4(name,age=18,**kwargs):
print(name)
print(age)
print(kwargs)

test4('alex',age=34,sex='m',hobby='tesla')

结果:
alex
34
{'sex': 'm', 'hobby': 'tesla'}

 

test4('alex',sex='m',hobby='tesla',age=34) 也可以
结果:
alex
34
{'sex': 'm', 'hobby': 'tesla'}


延伸3:全部组合
def test4(name,age=18,*args,**kwargs):
print(name)
print(age)
print(args)
print(kwargs)
logger("TEST4")
def logger(source):
print("from %s" % source)

test4('alex',age=34,sex='m',hobby='tesla')
结果:
alex
34
()
{'sex': 'm', 'hobby': 'tesla'}
from TEST4

args是空,由于它接受的是位置参数

转载于:https://www.cnblogs.com/tengtianshan/p/9597458.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值