zoukankan      html  css  js  c++  java
  • 函数的参数

    函数的参数有:

      1.形参和实参;

      2.位置参数和关键字参数;

      3.默认参数;

      4.非固定参数;

    1.形参和实参;

    形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量

    实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值

    2.位置参数和关键字参数;

    1 def test(x,y):
    2     print(x)
    3     print(y)
    4 
    5 test(y=1,x=2)   #关键参数值指定与位置无关
    6 print('下面是位置参数,与形参一一对应'.center(100,'-'))
    7 test(1,2)   #位置参数与形参一一对应

    返回:

     注意:关键参数是不能写在位置参数前面的。

      如:test(x=1,1) 会报错。

    3.默认参数;

    特点:调用函数的时候,默认参数非必须传递。

    用途:

      安装软件时的一键安装(默认安装值);

      连接数据库的端口号,如“def conn(host,port=3302)”

    1 def test(x,y=2):
    2     print(x)
    3     print(y)
    4 
    5 test(y=1,x=2)  #关键字参数
    6 print('下面是位置参数,与形参一一对应'.center(100,'-'))
    7 test(1,2)  #位置参数
    8 print('下面是默认参数'.center(100,'-'))
    9 test(1,)

    返回:

      

    4.非固定参数;*args,**kw

     *args 将多余的参数变为元组;

    **kw 将多余的参数变为集合。

     1 def test(x,*args):  #使用*args,可以将传入的多余的实参转换为元组的形式存放起来。
     2     print(x)
     3     print(args)
     4 
     5 test(1,2,3,4)
     6 
     7 
     8 def test2(**kwargs):  #使用**kwargs,可以将关键字参数转换为字典的方式存放起来。
     9     print(kwargs)
    10 
    11 test2(name='alex',age=8)  #等价test2(**{'name':'alex','age';8})

     返回:

    各种参数的注意项:

    1.关键参数是不能写在位置参数前面的,也就是说位置参数一定要在关键参数的前面。

    2.*args接受N个位置参数,转换为元组的形式。

    3.**kwargs将关键字参数转换为字典的形式,所以调用函数时不能传入非关键字参数给**kwargs。

    4.各种参数的顺序为:

    位置参数-->默认参数/关键字参数-->*args-->**kwargs

    如果*args之前已经传入了关键字参数,后面如果传入位置参数,是不能成功地传入*args中去的,而是报错。

  • 相关阅读:
    HDU 5222 ——Exploration——————【并查集+拓扑排序判有向环】
    nyoj 600——花儿朵朵——【离散化、线段树插线问点】
    Poj 3667——hotel——————【线段树区间合并】
    BNU 4260 ——Trick or Treat——————【三分求抛物线顶点】
    编写自己的Arduino库
    怎样看懂电路板?电路板短路检查方法是什么?
    Intel HEX格式
    关于2的补码
    sysfs是什么??
    Arduino 串口的一些高级用法
  • 原文地址:https://www.cnblogs.com/zoe233/p/7064830.html
Copyright © 2011-2022 走看看