勤学思培训网SZDFSL
  • 总算懂得python函数返回多个值

    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你下面是小编为您整理的关于python函数返回多个值,希望对你有所帮助。


    [图片0]

    python函数返回多个值

    函数可以返回多个值吗?答案是肯定的。

    比如在游戏中经常需要从一个点移动到另一个点,给出坐标、位移和角度,就可以计算出新的新的坐标:

    import math

    def move(x, y, step, angle=0):

    nx = x + step * (angle)

    ny = y - step * (angle)

    return nx, ny

    import math语句表示导入math包,并允许后续代码引用math包里的sin、cos等函数。

    然后,我们就可以同时获得返回值:

    >>> x, y = move(100, 100, 60, / 6)

    >>> print(x, y)

    151.

    但其实这只是一种假象,Python函数返回的仍然是单一值:

    >>> r = move(100, 100, 60, / 6)

    >>> print(r)

    (151., )

    原来返回值是一个tuple!但是,在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值,所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便。

    再python的迭代语法中也可以看到这种返回tuple的语法

    复制代码

    >>> d = {'a': 1, 'b': 2, 'c': 3}

    >>> for key in d:

    ... print(key)

    ...

    a

    c

    b

    复制代码

    因为dict的存储不是按照list的方式顺序排列,所以,迭代出的结果顺序很可能不一样。

    默认情况下,dict迭代的是key。如果要迭代value,可以用for value in (),如果要同时迭代key和value,可以用for k, v in ()。

    python 函数返回多个参数的赋值方法

    #定义函数

    def Get_Counter_AllMeasurevalue(self, inst_dg_address):

    """

    get all measure value ,as Frequency,period,duty,+width,-width,and so on...

    :param inst_dg_address:

    :return: Frequency,period,duty,+width,-width

    :return: all return value is string

    """

    Frequency =

    period =

    duty =

    p_width =

    n_th =

    rm1 = ();

    ret = -

    try:

    mi_1 = (inst_dg_address);

    except:

    rt_error("In DG:Get_Counter_Sensitive, open element1 resource error: %s" % inst_dg_address);

    return False;

    # 实际执行部分

    = 10000;

    ret = (':COUNter:MEASure?')

    ();

    frequency = ret[:15]

    period = ret[16:31]

    duty = ret[32:47]

    p_width = ret[48:63]

    n_width = ret[64:79]

    return frequency,period,duty,p_width,n_width

    获得函数的返回值方法:

    frq,perid,duty,p_wid,n_wid = (dut_dg_address)

    另外,debug调试的时候发现return 返回值是tuple 元组类型的,因此有多个返回值的 也可以通过元组的方式访问各个元组中的元素,


    [图片1]

    因为元组的元素不能修改,因此也印证了为什么函数返回值是元组的原因了

    python装饰器的用法

    def logger(func):

    def inner(*args, **kwargs): #1

    print "Arguments were: %s, %s" % (args, kwargs)

    return func(*args, **kwargs) #2

    return inner

    >>> @logger

    ... def foo1(x, y=1):

    ... return x * y

    >>> @logger

    ... def foo2():

    ... return 2

    >>> foo1(5, 4)

    Arguments were: (5, 4), {}

    20

    >>> foo1(1)

    Arguments were: (1,), {}

    1

    >>> foo2()

    Arguments were: (), {}

    2

    python如何在一个函数中调用另一个函数

    可以用3个变量去接收返回值,也可以直接获得tuple,然后用数组的索引去获得。比如这样:

    1

    2

    3

    4

    5

    6

    7

    def returnMulti():

    return 1, 2, 3

    result = returnMulti()

    a, b, c = returnMulti()

    print result[0], result[1], result[2]

    print a, b, c

    结果是一样的。