Python之函数基础

来源:互联网 发布:淘宝2015版本下载安装 编辑:程序博客网 时间:2024/04/30 20:16

函数

函数的功能:解决代码重用的问题,使代码简介易懂,保持了代码的一致性,实现代码模块化,方便调用、管理和维护。
【注】函数在定义时,仅解释并不执行,在调用时才会执行。

1. 函数的格式

def def_name(形参):    #注释信息    代码    return 返回值def_name(实参)  ==> 调用函数
  • 【注:】如果形参不为空,则必须给定相同数量的实参,反之亦然;如果形参为空,则实参也得为空。

2. Python中的函数与过程

  • 在编程语言中,过程无返回值,函数是有返回值的。但是在python中,可将 “过程” 即为无返回值的 函数 。
  • 函数与过程定义的方式相同,遵循的原则也相同。

3. 函数的参数

3.1 位置参数

  • 形参与实参的位置必须一一对应,数量不能多也不能少,如:
def test(x,y,z):    res = x ** y + z    return resi = test(1,2,3)print(i)#4
  • 【注:】当位置参数和关键字参数混合使用时,位置参数必须在关键字参数的左侧,否则报错

3.2 关键字参数

  • 形参与实参的位置不必一一对应,但数量需要对应,如:
def test(x,y,z):    res = x ** y + z    return 'res:',resi = test(y=1,x=2,z=3)print(i)#('res:', 4)
  • 【注:】当位置参数和关键字参数混合使用时,位置参数必须在关键字参数的左侧,否则报错

3.3 默认参数

  • 给部分形参设置默认值,如果函数调用时该形参未赋值,则将默认值赋给该形参。形参与实参不必一一对应,但数量需要相同。如:
def test(y,z,x=1):    res = x + y + z    return x,y,z,resprint(test(2,3))#(1, 2, 3, 6)def test(y,z,x=1):    res = x + y + z    return x,y,z,resprint(test(2,3,x=10))#(10, 2, 3, 15)
  • 【注:】设定默认值的形参必须在其他形参的右侧。是为了保证传递的位置参数在关键字参数的左边,一般在函数中,默认参数一般都设置在所有形参的最后;调用函数赋值时,修改默认参数也须在所有参数的最后

3.4 参数组 *args 与 **kwargs 用于在实参数量大于形参数量的情况下

形参与实参不必一一对应,二者数量也无需相同,但实参数应大于形参数,不可少于。

  • *args 负责接收过量的实参中的 “位置参数” ,以元祖形式保存;
  • **kwargs 负责接收过量的实参中的 “关键字参数” ,以字典形式保存,必须位于 *args 的后面。

【注:】*args 与 **kwargs 组合使用时,可以接收任意参数类型的无限多(大于形参数)个参数。如:

def test(a,b='123',*args):    return (a,b,args,args[-1])print(test(*[1,2,3]))#(1, 2, (3,), 3)
def test(a,b='123',*args):    print(a)    print(b)    print(args)    print(args[-1])print(test({2:'b'},*[1,2,3,*['a','b'],5,7,8,9,{1:'a'}]))#{2: 'b'}#1#(2, 3, 'a', 'b', 5, 7, 8, 9, {1: 'a'})#{1: 'a'}
def test(x,*args,**kwargs):    print(x)    print(args,args[-1])    print(kwargs)    print(kwargs.get('a'))test('c',123,'wwer',123,c=1,a=3,b=5)#c#(123, 'wwer', 123) 123#{'b': 5, 'a': 3, 'c': 1}#3
def test(x,*args,**kwargs):    print(x)    print(args,args[-1])    print(kwargs)    print(kwargs.get('a'))test(1,*[1,2,3,'w',35,3345,12],**{'name':'alex','age':12})#1#(1, 2, 3, 'w', 35, 3345, 12) 12#{'name': 'alex', 'age': 12}#None

4. 函数的返回值

  • 4.1 返回值的对象数量为1时,直接返回该对象;
  • 4.2 返回值的对象数量大于1时,返回一个由多个对象组成的元祖。

5. 函数的调用

  • 5.1 调用该函数时,是否需要给出实参
  • 5.1.1 在定义函数时,若形参数量为0,则调用该函数时,无需给出实参
  • 5.2.2 若形参数量不为0,则调用该函数时,必须给出实参,且实参数量必须大于形参数量

5.2 是否有返回值
- 5.2.1 函数:有返回值,可获取该返回值;
- 5.2.2 过程:无返回值。

原创粉丝点击