zoukankan      html  css  js  c++  java
  • python 函数的参数定义及调用

    参数定义:
    1. 位置参数:
        这是熟悉的标准化参数,位置参数必须在调用函数中定义的准确顺序来传递,在没有默认参数的情况下,传入参数
        的精确数目必须和声明的数目一致。
      def foo(who, name):
        print('{0} is {1}'.format(who, name)
      foo函数有两个位置参数,那么意味这foo的调用必须有两个参数,不能多也不能少
    2. 默认参数:
      定义默认参数的如下:
      def func(posargs, defargs=dval, defargs2=dval2,...):
        'function_document_string'
        unction_body_suite
      没个默认参数都紧跟着一个默认的赋值语句,如果在函数的调用中没有给默认参数传递值,函数会采用这个赋值来实现参数调用。
    3. 可变长度参数:
      和常规函数明显不同,如果在函数的调用过程中需要处理可变数量的参数,由于参数的数目在函数的调用之前是未知的(甚至在运行期间,每次函数的调用参数的数目也是不同的)这个使用需要使用可变长度参数来定义函数。
     非关键字可变长度参数(元组)
      def func([formal_args],*args_tuple):
        'function_document_string'
        function_body_suite
      星号操作符之后的形参将作为元组传递给函数。元组保存了所有传递过来的额外的参数。
      def tupleVarargs(arg1,arg2='defaultB',*theRest):
        print('formal arg 1:', arg1)
        print('formal arg 2:', arg2)
        for eachxtArg in theRest:
        print('another args:',eachxtarg)

     关键字变量参数(字典)
      为了区分关键字参数和非关键字参数使用××
      def func([formal_args], [*vargst], [**vargsd]):
        'function_document_string'
        function_body_suite
      这样传进来的参数都是成对的,字典中的键为参数名值相应的为参数值。

     1 def newfoo(formalarg1, formalarg2='default', *nnameargs, **nameargs):
     2     print('formal 1 :',formalarg1)
     3     print('formal 2 :', formalarg2)
     4     for nname in nnameargs:
     5         print('no key name args :', nname)
     6     for kname in nameargs.keys():
     7         print('key name args {0}: {1}'.format(kname, nameargs[kname]))
     8 
     9 # 普通的方式调用函数
    10 newfoo(10, 20, 30, 40, fifty=50, sixty=60)
    11 
    12 # 将非关键字参数和关键字参数通过× 和 ××的方式传递
    13 newfoo(10, 20, *(30, 40), **{'fifty':50, 'sixty':60})
    14 
    15 # 在函数之外来构造元组和字典进行参数传递
    16 aTuple = (30, 40)
    17 aDict = {'fifty':50, 'sixty':60}
    18 newfoo(10, 20, *aTuple, **aDict)
    View Code

    传递参数:
      其实在传递参数的时候可以根据定义函数参数的形式进行反向推导来传递

    1 def add(a, b):
    2     return a+b
    3 
    4 
    5 print(add(1, 2))
    6 print(add(b=2, a=1))
    7 print(add(*(1, 2)))
    8 print(add(**{'a':1, 'b':2}))
    View Code
  • 相关阅读:
    洛谷 P1508 Likecloud-吃、吃、吃
    Codevs 1158 尼克的任务
    2017.10.6 国庆清北 D6T2 同余方程组
    2017.10.6 国庆清北 D6T1 排序
    2017.10.3 国庆清北 D3T3 解迷游戏
    2017.10.3 国庆清北 D3T2 公交车
    2017.10.3 国庆清北 D3T1 括号序列
    2017.10.4 国庆清北 D4T1 财富
    2017.10.7 国庆清北 D7T2 第k大区间
    2017.10.7 国庆清北 D7T1 计数
  • 原文地址:https://www.cnblogs.com/someoneHan/p/6213004.html
Copyright © 2011-2022 走看看