Python之函数的参数

作者: 啃手高手 | 来源:发表于2016-03-23 18:14 被阅读985次

Python中函数的参数有五种:位置参数(必选参数)、默认参数、可变参数、关键字参数、命名关键字参数。

位置参数

//定义位置参数函数
def sayHello(name):
    print('hello',name)

//调用函数
sayHello('Tom')

调用结果:
('hello', 'Tom')

此时的sayHello(name)函数,参数name是一个位置参数。

当调用函数的时候,必须传入一个参数。其他方式调用都会报错:

//无参数调用
sayHello()
TypeError: sayHello() takes exactly 1 argument (0 given)
//多参数调用
sayHello('Tom','Jarry')
TypeError: sayHello() takes exactly 1 argument (2 given)

默认参数

//定义具有默认参数的函数
def sayHello(name,greet='Hello'):
    print(greet,name)
//调用函数
sayHello('Tom')
sayHello('Jarry','Hai')

调用结果:
('Hello', 'Tom')
('Hai', 'Jarry')

默认参数的好处不言自明,它能够简化函数的调用。设置默认参数的时候,需要注意的是:必选参数在前,默认参数在后,否则会报错。

但函数有多个默认参数时,调用的时候,既可以按顺序提供默认参数,也可以不按顺序;当不按顺序提供参数的时候,要把参数名写上。举个栗子:

def sayHello(name,greet='hello',word='how are you?'):
    print(greet,name,word)

sayHello('Tom',word = 'how do you do?')

调用结果:
('hello', 'Tom', 'how do you do?')

可变参数

可变参数的函数允许传入任意个参数,这些可变参数在函数调用的时候会自动组装成一个tuple。

//定义可变参数的函数
def sayHello(*saySomething):
    for tmp in saySomething:
        print(tmp)
//调用函数 以下方式调用都没问题
sayHello('Sawadika','Jarry')
sayHello('nihao','BOBO','how do you do ?')
sayHello('hello','Tom','how are you ?')

如果已经有一个list或者tuple,要调用可变参数的函数怎么办?可以这样:

//已有的list
somethings = ['nihao','Zhangye','how do you do ?']
//加*即可
sayHello(*somethings)

调用结果:
nihao
Zhangye
how do you do ?

关键字参数

关键字参数的函数允许传入任意个含参数名的参数,这些关键字参数在函数内部自动组装成一个dict

//定义一个关键字参数
def sayHello(**saySomething):
    print(saySomething)

//调用关键字参数的函数
sayHello(name='TOM',greet='hello',word='How do you do')
sayHello(name='BOBO',word='how are you')
sayHello(name='JHON')

调用结果:
{'word': 'How do you do', 'name': 'TOM', 'greet': 'hello'}
{'word': 'how are you', 'name': 'BOBO'}
{'name': 'JHON'}

与可变参数类似,如果已经有一个dict,允许把dict当做参数直接传进去:

//已有的dict
para = {'name':'BOBO','greet':'nihao'}
//定义关键字参数
def sayHello(**parameters):
    if 'name' in parameters:
        print('name is',parameters['name'])
    if 'greet' in parameters:
        print('greet is',parameters['greet'])
    if 'word' in parameters:
        print('word is',parameters['word'])
//调用
sayHello(**para)

调用结果:
('name is', 'BOBO')
('greet is', 'nihao')

命名关键字参数

使用关键字参数的函数,允许传入任意不受限制的关键字参数,我们只能在函数内部进行检查参数;如果要限制关键字参数的名字,就可以用命名关键字参数

//定义一个命名关键字参数函数
def sayHello(name, *, greet='nihao', word):
    print(greet,name, word)
//调用
sayHello('TOM',greet='hello',word='how are you')
sayHello('TOM',word='how do you do')

调用结果:
hello TOM how are you
nihao TOM how do you do

特别注意:命名关键字参数是python3的语法,python2.7不兼容。

最后

以上介绍的函数的五种参数都可以组合使用,除了可变参数无法和命名关键字参数混合。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数/命名关键字参数和关键字参数。

本文整理资料来自:参考廖雪峰的Python教程

相关文章

  • 07:函数之函数的参数和返回值

    python学习day_6: 函数之函数的参数和返回值: 1、函数的参数: 参数:其实就是一种变量 是一种特殊的变...

  • python基础-07-函数

    python基础-函数 1.函数的定义 例子: 2.python中函数的参数详解 必备参数demo: 默认参数de...

  • Python的参数

    Python的参数函数的参数

  • python 函数参数类型

    本文主要学习内容: python函数参数类型 python 的函数参数类型分为4种:1.位置参数:调用函数时根据函...

  • python:函数说明

    Python: 函数参数魔法 2016-12-01 函数参数 在 Python 中,定义函数和调用函数都很简单,但...

  • python---函数参数

    python---函数参数 在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参...

  • python函数

    python函数 什么是函数 函数语法 调用函数 函数参数形参与实参传参指定参数传参参数默认值可变参数参数解包参数...

  • Python之函数的参数

    Python中函数的参数有五种:位置参数(必选参数)、默认参数、可变参数、关键字参数、命名关键字参数。 位置参数 ...

  • Python - 2017/01/28-函数

    调用python内置函数 函数名(参数) 即可调用python内置函数 help(函数名) 返回python对于函...

  • Python高阶函数学习笔记

    python中的高阶函数是指能够接收函数作为参数的函数 python中map()函数map()是 Python 内...

网友评论

    本文标题:Python之函数的参数

    本文链接:https://www.haomeiwen.com/subject/bnollttx.html