python函数传递参数的几种方法整理

版权声明:本文为博主原创文章,未经博主允许不得转载,如果有错误,欢迎指正,提前感谢。 https://blog.csdn.net/Quinlan_/article/details/87798822

形参:函数定义使用的参数
实参:函数调用使用的参数

1、位置实参:参数的先后顺序很重要

def func(first, last):
    print("fisrt: " + first, ",last: " + last + "\n")


func('a', 'b')
func('b', 'a')
fisrt: a ,last: b

fisrt: b ,last: a

2、关键字实参:在传参数的时候,将实参指定给形参,和参数顺序无关

def func(first, last):
    print("fisrt: " + first, ",last: " + last + "\n")


func(last = 'a', first = 'b')
func(first = 'b', last = 'a')
fisrt: b ,last: a

fisrt: b ,last: a

默认值:
在编写函数的时候,可以给形参指定一个默认值,当这个函数被调用时没用传递该形参,那么这个形参的值就是默认值。

def func(first, last='c'):
    print("fisrt: " + first, ",last: " + last + "\n")


func(first = 'b')
func('b')
func('a', 'b')
func(first = 'b', last = 'a')
fisrt: b ,last: c
fisrt: b ,last: c
fisrt: a ,last: b
fisrt: b ,last: a

3、传递可选的实参:将可选的那个形参放到参数最后并赋值为空字符串

def get_name(first_name, last_name, middle_name=''):
    if middle_name:
        full_name = first_name+" "+middle_name+" "+last_name
    else:
        full_name = first_name+" "+last_name
    return full_name.title()

name1 = get_name('wang', 'xiao', 'ming')
name2 = get_name('wang', 'ming')

print(name1 + '\n' + name2)
Wang Ming Xiao
Wang Ming

4、传递任意数量的实参

def func(*args):
    print(args)

func('a')
func('b')
func(1)
func('a', 'b')
func('a', 'b', 'c')
func('a', 'b', 'c', 'd')
('a',)
('b',)
(1,)
('a', 'b')
('a', 'b', 'c')
('a', 'b', 'c', 'd')

其中 *args 让python创建一个名为args的空元组,并将接受到的所有实参都放到这个元组中

5、位置实参&&任意数量实参

如果让函数接受不同类型的实参,必须在 函数定义中将接纳任意数量实参的形参放在最后
python先匹配位置实参和关键字实参,然后把其余参数放到最后一个形参里

def message(age, *other):
    print("age: "+str(age))
    for i in other:
        print(i)

message(18, 'c cup')
message(100)
message(20, 'red', 'blue', 'white')
age: 18
c cup
#
age: 100
#
age: 20
red
blue
white

6、关键字实参&&任意数量
当需要接受任意数量的实参,但是预先不知道传递给函数的是什么信息
接受带有参数名的参数,组成一个字典

def person(name, age, **kw):
    print('name: '+name, 'age: '+str(age), 'kw: '+str(kw))


person('Monica', 18)
person('Monica', 19, city='BeiJing')
person('Monica', 20, city='BeiJing', job='Teacher')

name: Monica age: 18 kw: {}
name: Monica age: 19 kw: {'city': 'BeiJing'}
name: Monica age: 20 kw: {'city': 'BeiJing', 'job': 'Teacher'}

**形参 kw 中的两个 * 让python创建一个名为kw的空字典,并将所有的键值对都封装到这个字典当中。

7、组合使用

def person(name, age, height=170, *args, **kw):
    print('name: '+name, 'age: '+str(age), 'args: '+str(args), 'kw: '+str(kw))


person('Monica', 15)
person('Monica', 16, 180)
person('Monica', 17, 'a', 'b')
person('Monica', 18, city='BeiJing')
person('Monica', height=160, age=19)
person('Monica', 20, 'a', 'b', 'c', city='BeiJing', job='Teacher')
name: Monica age: 15 args: () kw: {}
name: Monica age: 16 args: () kw: {}
name: Monica age: 17 args: ('b',) kw: {}
name: Monica age: 18 args: () kw: {'city': 'BeiJing'}
name: Monica age: 19 args: () kw: {}
name: Monica age: 20 args: ('b', 'c') kw: {'city': 'BeiJing', 'job': 'Teacher'}

猜你喜欢

转载自blog.csdn.net/Quinlan_/article/details/87798822
今日推荐