美文网首页首页之约我用 Linux
Python中函数参数传递

Python中函数参数传递

作者: liuchungui | 来源:发表于2018-08-28 23:47 被阅读17次

前几天写一个方法的时候,内部调用了第三方库的可变参数方法,由于实际的需求,导致参数越写越长,很不方便。这时是不是我们自己也应该写一个可变参数的方法,然后根据需要动态传递参数?

在解决这个问题之前,我们先来了解Python中四种传递参数的形式:

fun1(a, b, c)
fun2(a=1, b=2, c=3)
fun3(*args)
fun4(**kargs)

我们分别简单介绍一下这四种基本的使用方式。

  • 第一种:fun1(a, b, c)它是直接将实参赋予形参,根据位置做匹配,严格要求实参的数量与形参的数量位置相等。
  • 第二种:fun2(a=1, b=2, c=3)根据键值对的形式实现参数的匹配,可以忽略参数的位置关系,直接根据关键字来进行赋值。同时,它可以使用默认参数,例如fun2(a=10), 那么b=2和c=3就是默认参数。
  • 第三种:fun3(*args),这种方式可以传递任意个参数,这些参数都会放到一个tuple元组中赋值给args。我们在函数内直接操作tuple元组就可以取出参数,这样的好处是参数不受到限制,但本身还是有次序的
  • 第四种:fun4(**kargs),它是以键值对字典的形式传递参数,它的参数数量和位置都不受限制。

其中,第一种和第二种调用方式,我很熟悉。而第三种和第四种,还没怎么用过,下面简单示范下:

def print1(*args):
    print('print1: 姓名: {}, 地址: {}'.format(args[0], args[1]))

def print2(**kwargs):
    print('print2: 姓名: {}, 地址: {}'.format(kwargs['name'], kwargs['address']))

print1('jack', '中关村')
print2(name='jack', address='中关村')

输出:

print1: 姓名: jack, 地址: 中关村
print2: 姓名: jack, 地址: 中关村

为了方便,我们还可以将这几种方式混用。例如,下面的show_info(),我们必传参数是name,city是默认参数,而其他一些参数,我们可以使用**kwargs可变参数的形式传递进去。示例如下:

def show_info(name, city='北京', **kwargs):
    print(name, city, kwargs)

show_info('Jack', city='上海', height='1.8')

好了,现在我们回到前面提出的问题,我们如何写一个内部调用可变参数方法的函数,动态的将参数传递给内部方法?

其实,念起来绕口,实现起来很简单,看下面示例:

def print1(*args):
    print('print1: 姓名: {}, 地址: {}'.format(args[0], args[1]))

def print2(**kwargs):
    print('print2: 姓名: {}, 地址: {}'.format(kwargs['name'], kwargs['address']))

def print3(*args):
    print1(*args)

def print4(**kwargs):
    print2(**kwargs)

print3('jack', '中关村')
print4(name='jack', address='中关村')

这样,上面print3()调用了print1()print4()调用了print2(),成功的将可变参数从外部传递进去。

总结

主要记录了下函数传递的四种方式,以及如何使用可变参数。虽然是小的知识点,但可以让代码实现起来更优雅。

参考

python函数的四种参数传递方式

相关文章

  • Python函数参数传递机制(超级详细)

    Python中,函数参数由实参传递给形参的过程,是由参数传递机制来控制的。通过学习《Python函数值传递和引用传...

  • python的参数传递

    一、前言 在python中,函数参数的定义和传递有以下几种方式: 在python中,参数可以按照顺序传递,在调用函...

  • 常用数据结构和算法汇总

    Python List as belowPython语言特性1 Python的函数参数传递2 Python中的元类...

  • python 参数传递总结

    参数的传递 python中函数的参数通过赋值的方式来传递引用对象。下面总结通过总结常见的函数参数定义方式,来理解参...

  • python函数调用的参数传递

    python的函数参数传递是"引用传递(地址传递)"。 python中赋值语句的过程(x = 1):先申请一段内存...

  • interview_python

    Python语言特性1 Python的函数参数传递2 Python中的元类(metaclass)3 @static...

  • (转载)Python知识点

    Table of Contents Python语言特性1 Python的函数参数传递2 Python中的元类(m...

  • Python中函数参数传递

    前几天写一个方法的时候,内部调用了第三方库的可变参数方法,由于实际的需求,导致参数越写越长,很不方便。这时是不是我...

  • Python函数

    函数定义 Python 定义函数使用 def 关键字,一般格式如下: 参数传递 在 python 中,string...

  • Python: 函数参数魔法

    函数参数 在 Python 中,定义函数和调用函数都很简单,但如何定义函数参数和传递函数参数,则涉及到一些套路了。...

网友评论

    本文标题:Python中函数参数传递

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