您的位置 首页 汽车

python的方位参数、默许参数、关键字参数、可变参数差异

一、位置参数调用函数时根据函数定义的参数位置来传递参数。#!/usr/bin/env python# coding=utf-8def print_hello(name, sex):sex_dict =

一、方位参数

调用函数时依据函数界说的参数方位来传递参数。

#!/usr/bin/env python

# coding=utf-8

def print_hello(name, sex):

sex_dict = {1: u’先生’, 2: u’女士’}

print ‘hello %s %s, welcome to python world!’ %(name, sex_dict.get(sex, u’先生’))

# 两个参数的次序有必要一一对应,且少一个参数都不能够

# print_hello(‘tanggu’, 1)

二、关键字参数

用于函数调用,经过“键-值”方法加以指定。能够让函数愈加明晰、简单运用,一起也清除了参数的次序需求。

# 以下是用关键字参数正确调用函数的实例

# print_hello(‘tanggu’, sex=1)

# print_hello(name=’tanggu’, sex=1)

# print_hello(sex=1, name=’tanggu’)

# 以下是过错的调用方法

# print_hello(1, name=’tanggu’)

# print_hello(name=’tanggu’, 1)

# print_hello(sex=1, ‘tanggu’)

经过上面的代码,咱们能够发现:有方位参数时,方位参数有必要在关键字参数的前面,但关键字参数之间不存在先后次序的

三、默许参数

用于界说函数,为参数供给默许值,调用函数时可传可不传该默许参数的值(留意:一切方位参数有必要出现在默许参数前,包含函数界说和调用)

# 正确的默许参数界说方法–> 方位参数在前,默许参数在后

def print_hello(name, sex=1):

….

# 过错的界说方法

def print_hello(sex=1, name):

….

# 调用时不传sex的值,则运用默许值1

# print_hello(‘tanggu’)

# 调用时传入sex的值,并指定为2

# print_hello(‘tanggu’, 2)

四、可变参数

界说函数时,有时分咱们不确定调用的时分会传递多少个参数(不传参也能够)。此刻,可用包裹(packing)方位参数,或许包裹关键字参数,来进行参数传递,会显得十分便利。

1、包裹方位传递

def func(*args):

….

# func()

# func(a)

# func(a, b, c)

咱们传进的一切参数都会被args变量搜集,它会依据传进参数的方位合并为一个元组(tuple),args是元组类型,这便是包裹方位传递。

2、包裹关键字传递

def func(**kargs):

….

# func(a=1)

# func(a=1, b=2, c=3)

kargs是一个字典(dict),搜集一切关键字参数

五、解包裹参数

*和**,也能够在函数调用的时分运用,称之为解包裹(unpacking)

1、在传递元组时,让元组的每一个元素对应一个方位参数

def print_hello(name, sex):

print name, sex

# args = (‘tanggu’, ‘男’)

# print_hello(*args)

# tanggu 男

2、在传递词典字典时,让词典的每个键值对作为一个关键字参数传递给函数

def print_hello(kargs):

print kargs

# kargs = {‘name’: ‘tanggu’, ‘sex’, u’男’}

# print_hello(**kargs)

# {‘name’: ‘tanggu’, ‘sex’, u’男’}

六、方位参数、默许参数、可变参数的混合运用

基本原则是:先方位参数,默许参数,包裹方位,包裹关键字(界说和调用都应遵从)

def func(name, age, sex=1, *args, **kargs):

print name, age, sex, args, kargs

# func(‘tanggu’, 25, 2, ‘music’, ‘sport’, class=2)

# tanggu 25 1 (‘music’, ‘sport’) {‘class’=2}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/156613.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部