python中函数的参数

函数介绍

函数是带有名字的代码块,能够执行特定的任务。当咱们须要执行这一特定任务时,调用该函数。固然若是须要屡次执行该任务,只需屡次调用该函数便可。定义函数的时候,咱们把参数的名字和位置肯定下来,函数的接口定义就完成了。对于函数的调用者来讲,只须要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解。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}

在函数定义的时候,形参能够有默认值,以上代码能够修改成:code

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 关键字实参

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

# 函数定义
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
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
相关文章
相关标签/搜索