python中函数的参数

函数介绍

函数是带有名字的代码块,可以执行特定的任务。当我们需要执行这一特定任务时,调用该函数。当然如果需要多次执行该任务,只需多次调用该函数即可。定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了。对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解。

形参与实参

函数定义的时候使用的参数叫形参,函数调用的时候使用的参数叫实参。

def f(n):    # 在函数定义过程中使用的参数是形参:n
    print('The argument is:',n) #该函数仅仅打印一句话
    return None # 函数反馈空值None
# 以下为函数的调用,支持多种数据类型:
>>> f(100)    # 实参为Number型
The argument is: 100
>>> f('It is funny')    # 实参为str型
The argument is: It is funny
>>> f((1,2,3))    # 实参为tuple型
The argument is: (1, 2, 3)
>>> f([1,2,3])    # 实参为list型
The argument is: [1, 2, 3]
>>> f({'name':'Adam','age':18})    # 实参为dict型
The argument is: {'name': 'Adam', 'age': 18}

在函数定义的时候,形参可以有默认值,以上代码可以修改为:

def f(n=1):    # 形参n的默认值为1,表示在函数调用不输入实参时,实参则取默认值
    print('The argument is:',n) #该函数仅仅打印一句话
    return None # 函数反馈空值None
# 函数调用:
>>> f()    # 可以不输入实参直接调用函数,实参则取默认值
The argument is: 1

实参的类型

1 位置实参

函数调用中的实参与函数定义中形参以相同的顺序关联,这种关联方式称为位置实参。使用位置实参调用函数时,如果实参的顺序不正确,结果可能出乎意料,乃至出错。

# 函数定义
def f(name,age):
    print(name)
    print(age)
# 函数调用
>>> f('Cathy',18)
Cathy
18

2 关键字实参

关键字实参,在函数调用时直接将实参的名称与值关联起来,因此向函数传递的实参不会混淆。关键字实参可以让函数调用无需考虑实参的顺序。

# 函数定义
def f(name,age):
    print(name)
    print(age)
# 函数调用
>>> f(age=18,name='Cathy')
Cathy
18

3 任意数量的实参

3.1 带*号的形参将任意数量的实参接收为tuple类型

# 函数定义
def f_lt(*n):
    print(type(n))    # *号将传进来的参数变成了tuple类型
    for i in n:
            print(i)

# 函数调用
# 第一次调用
f_lt(1,2,3,4,5)
print('_ '*20)
# 第二次调用,参数为list类型
l = [1,2,3,4,5]
f_lt(*l)
print('_ '*20)
# 第三次调用,参数为tuple类型
t = (1,2,3,4,5)
f_lt(*t)
print('_ '*20)

# 返回结果
<class 'tuple'>
1
2
3
4
5
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
<class 'tuple'>
1
2
3
4
5
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
<class 'tuple'>
1
2
3
4
5
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

3.2 带**号的形参将任意数量的关键字参数接收为dict类型

# 函数定义
def f_d(**kw):
    print(type(kw))     # **号将传进来的参数变成了dict类型
    print(kw)
    for k,v in kw.items():
        print(k,': ',v)

# 函数调用
# 第一次调用
f_d(name='Adam',age=18)
print('_ '*20)
# 第二次调用,参数为dict类型
d = {'name':'Bob','Age':19}
f_d(**d)
print('_ '*20)

# 返回结果
<class 'dict'>
{'name': 'Adam', 'age': 18}
name :  Adam
age :  18
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
<class 'dict'>
{'name': 'Bob', 'Age': 19}
name :  Bob
Age :  19
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

转载于:https://my.oschina.net/u/3861934/blog/1920127

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值