zoukankan      html  css  js  c++  java
  • Python在函数中使用*和**接收元组和列表

    当要使函数接收元组或字典形式的参数 的时候,有一种特殊的方法,它分别使用*和**前缀 。这种方法在函数需要获取可变数量的参数的时候特别有用。

    [注意] 
    [1] 由于在args变量前有*前缀 ,所有多余的函数参数都会作为一个元组存储在args中 。如果使用的是**前缀 ,多余的参数则会被认为是一个字典的健/值对 。
    [2] 对于def func(*args):,*args表示把传进来的位置参数存储在tuple(元组)args里面。例如,调用func(1, 2, 3) ,args就表示(1, 2, 3)这个元组 。
    [3] 对于def func(**args):,**args表示把参数作为字典的健-值对存储在dict(字典)args里面。例如,调用func(a='I', b='am', c='wcdj') ,args就表示{'a':'I', 'b':'am', 'c':'wcdj'}这个字典 。
    [4] 注意普通参数与*和**参数公用的情况,一般将*和**参数放在参数列表最后。

    [元组的情形] 

    #! /usr/bin/python
    # Filename: tuple_function.py
    # 2010-7-19 wcdj
    def powersum(power, *args):
        '''Return the sum of each argument raised
    to specified power.'''
        
        total=0
        for i in args:
            total+=pow(i,power)
        return total
    print 'powersum(2, 3, 4)==', powersum(2, 3, 4)
    print 'powersum(2, 10)==', powersum(2, 10)
    ########
    # output
    ########
    powersum(2, 3, 4)==25
    powersum(2, 10)==100 

    [字典的情形]

    #! /usr/bin/python
    # Filename: dict_function.py
    # 2010-7-19 wcdj
    def findad(username, **args):
        '''find address by dictionary'''
        print 'Hello: ', username
        for name, address in args.items():
            print 'Contact %s at %s' % (name, address)
    findad('wcdj', gerry='gerry@byteofpython.info', /
            wcdj='wcdj@126.com', yj='yj@gmail.com'

    在gvim中的输出结果:
    gvim中的输出结果

    http://blog.csdn.net/delphiwcdj/article/details/5746560

  • 相关阅读:
    [单链表]链表指针追赶问题
    二叉查找树与平衡二叉树
    二叉树的下一个结点
    fork进程函数总结
    《Effective C++》Item2:尽量以const,enum,inline替换#define
    Hash表的使用
    [数字]整数数字的算法
    算法题:找出整数数组中两个只出现一次的数字
    删除元素的操作
    [Reprinted] 使用Spring Data Redis操作Redis(一) 很全面
  • 原文地址:https://www.cnblogs.com/bincoding/p/7944860.html
Copyright © 2011-2022 走看看