CSIC_716_20191109【函数的语法,以及函数的分类,可变长参数*args】

函数

定义、作用、及使用方式

函数是一种工具,可以被重复调用。

使用函数可精简重复代码,减少冗余,增加代码的可读性。

函数要先构造函数,然后调用函数。

构造及调用函数的语法结构

关键字def  函数名def_name( 形参1,形参2) :

  ''' 函数的功能描述'''

  函数体

---------------调--------------用-------------------

函数名def_name(实参1,实参2)

示例如下:

def def_name(a, b, *args):
    ''' 这里是函数的功能描述'''
    print('这里是函数体', a, b)
    return


def_name('你', '好')  # 这里是函数体 你 好

  函数名的命名规范与变量名一样,在做实际项目的时候,把将要实现的功能用函数逐个列举出来,函数体暂时先用pass替代,设计好架构之后可以进行代码编写。

函数可分为三种:空函数、无参函数、有参函数。

空函数:

def func1( ):
    pass  # 函数体只有pass

无参函数:

def func2( ):  # 括号里面没有形参
    print('这里是函数体')  # 函数体的代码,不依赖外界的值

有参函数

def func3(x,y):  # 有形参
    sum1 = x + y  # 函数体的代码依赖形参
    print(sum1)

  

从返回值return角度看,有三大类:(函数体在执行过程中遇到return会立即终止,并跳出函数)

第一种:不写return,只写return,者写return None

return是函数结束的标志,不写return会在函数体执行完之后,默认返回None,只写return和写return None的效果一样。

第二种:return一个值

return返回的值可作为变量使用

def func3(x, y):  # 有形参
    sum1 = x + y  # 函数体的代码依赖形参
    return sum1


toatal = func3(7, 8)
print(type(toatal), toatal)  # <class 'int'> 15

  

第三种:return多个值

return多个值的时候,这多个值默认以元组形式返回,也可以自己制定返回数据的类型。

def func4(x, y):  # 有形参
    sum1 = x + y  # 函数体的代码依赖形参
    sub1 = x - y
    return sum1, sub1


subtraction = func4(9, 6)
print(type(subtraction), subtraction)  # <class 'tuple'> (15, 3)

  也可以改变返回值类型,举例将默认的元组变成列表:

def func4(x, y):
    sum1 = x + y
    sub1 = x - y
    return sum1, sub1


subtraction = list(func4(9, 6))  # 将元组转为列表
print(type(subtraction), subtraction)  # <class 'list'> [15, 3]

  

在调用有参函数时,需向函数传递参数,有五种传参的方式:

位置参数

调用时,按照形参的位置,直接在调用时按照形参顺序,对应传递相应的值。上文例子中调用函数均使用位置参数的方式。

关键字参数

调用时,在实参前面表标上形参的名字,此时就不用按照顺序传值。

def func3(x, y):  
    sum1 = x + y  
    return sum1


toatal = func3(y=7, x=8)

默认参数

 在定义函数时,在形参后面直接赋值,作为函数的默认参数。如果在调用函数时如果不传值,则函数体默认使用默认参数。

def func3(x=1, y=1):  
    sum1 = x + y  
    return sum1


print(func3())  # 2

  

 可变长参数

*args 在定义函数时,预留的用于接收溢出的位置参数的形参。

**kwargs 在定义函数时,预留的用于接收溢出的关键字参数的形参。  溢出的值都存入字典。

【*】号在形参中用于聚合,在实参时用于打散。

*kwargs表示打散字典,取key。

如果位置参数和关键字参数混用,位置参数一定要放在关键字参数前面。

# _*_ coding: gbk _*_
# @Author: Wonder
def find(w, z, *args):
    sum1 = w + z
    print(args)  # (4, 5)
    return sum1


eee = find(2, 3, 4, 5, )


def find2(w, z, **args):
    sum1 = w + z
    print(*args)  # q p
    print(args)  # {'q': 4, 'p': 5}
    return sum1


r = find2(w=2, z=3, q=4, p=5, )

  

原文地址:https://www.cnblogs.com/csic716/p/11826569.html