day09函数基础

1.什么是函数?

函数就是对实现某一特定功能的代码块的封装

2.函数的分类:

系统函数(内置函数)- 系统已经实现的函数
例如:print(),range(),input()...
自定义函数:程序员自己声明的函数

3.函数的声明(定义)

语法:
def 函数名(形式参数):
函数体
def - python 声明函数的关键字
函数名 - 和变量名要求一样,要求见名知意(函数的功能)
() - 固定写法
形参列表 - 参数1,参数2....(0个或者多个)
型参作用 - 将函数外部的数据传递到函数里面
: - 固定写法
函数体(函数) - 和def保持一个缩进(实现函数功能的代码块)

4.初学者声明函数的步骤

第一步:确定函数的功能
第二部:根据功能确定函数名
第三部:确定形参(看实现函数的功能需不需要从外面传值,如果需要确定传几个)
第四部:实现函数的功能
第五步:确定返回值

def totals(a, b):
    c = a + b
    print('%d + %d = %d' % (a, b, c))


totals(5, 7) # 5 + 7 = 12

5.函数的调用

1.语法:
函数名(实参列表)
2.说明:
函数名 - 已经声明过的函数
() - 固定写法
实参列表 - 数据1,数据2,数据3...(实参是用来给形参赋值)

def sum_tatal(n):  # n形式参数
    """
    功能:实现从1一直加到n的和,n代表要从1加到多少
    """
    sum_tatal_n = 0
    for x in range(1, n+1):
        sum_tatal_n += x
    print('从1一直加到%d的和为:%d' % (n, sum_tatal_n))


sum_tatal(100)  # 调用 sum_tatal()函数,100为实际参数

3.函数的调用过程(重要)
第一步:回到函数声明的位置
第二部:用实参给形参赋值 - 传参,保证每个形参都有值
第三部:执行函数体
第四步:确定返回值,看执行过程中有没有遇到return,有遇到return就返回return后面的值没有遇到return返回默认值(None)
第五步:回到函数调用的位置,接着往后执行

6.函数的参数

1.位置参数和关键字参数
根据调用函数的时候实参的写法分为位置参数和关键字参数
位置参数:让实参顺序和实参一一对应,中间用逗号隔开
关键字参数:通过形参名 = 值的格式来确定实参
注意:如果既有位置参数又有关键字参数,位置参数一定要在关键字参数前面

def fun1(a, b, c):
    print('a:%d b:%d c:%d' % (a, b, c))


fun1(c=10, b=30, a=100)  # 关键字参数
fun1(10, c=50, b=40)  # 为值参数+关键字参数

2.参数默认值
声明函数的时候,可以给形参设置默认值,有默认值的形参,在调用函数的时候可以不用给这个形参赋值
注意:有默认值的参数,要放在没有默认值参数的后面

def fun2(a, b, c=100):  # c=100是设置的默认值
    print('a:%d b:%d c:%d' % (a, b, c))


fun2(a=10, b=30)  # a:10 b:30 c:100 ->没有给c赋值,打印的是默认值
fun2(a=10, b=30, c=50)  # a:10 b:30 c:50 ->给c赋值50,覆盖了默认值

3.参数的类型说明
python中类型只有说明的作用,没有约束的作用
说明方法:
1.参数默认值
2.参数名:类型

def fun3(a: list, b: int, c=''):
    print(a, b, c)


fun3([1, 2], 20, '哈哈')

4.不定长参数:形参的个数不确定
在声明函数的时候在形参前加一个*号,就代表这个参数是不定长参数,可以同时接收多个实参
注意:不带*的参数要放在带*参数的前面
*参数 - >生成元组(位置参数赋值)
**参数 -> 生成字典(关键词参数赋值

def fun4(*nums):
    counts = 0
    for items in nums:
        counts += items
    print('和为:%d' % counts)


fun4(1)
fun4(1, 5)

7.函数的返回值

1.什么是函数的返回值
返回值就是return关键字后面的表达式的值,就是函数调用表达式的值
说明:
1.return -> 函数体中的关键字(只能出现在函数中)
2.作用结束函数,确定函数返回值
过程:
第一步:回到函数声明的位置
第二部:用实参给形参赋值 - 传参,保证每个形参都有值
第三部:执行函数体
第四步:确定返回值,看执行过程中有没有遇到return,有遇到return就
返回return后面的值没有遇到return返回默认值(None)
第五步:回到函数调用的位置,接着往后执行(此时调用函数表达式的值就是函数的返回值)

def return1(a, b):
    c = a + b
    return c


print('和 = ', 4 + return1(5, 5))  # 和 =  14

2.什么时候需要返回值(初学者)
指导思想:如果实现函数的功能会产生先的数据,就可以把这个数据作为函数的返回值直接返回多个值的时候,实际返回的是元组

def return2(a, b):
    return a+b, a-b


c = return2(20, 10)
print(c, type(c))  # (30, 10) <class 'tuple'>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 函数只定义一次,但可能被执行或调用任意次。JS函数是参数化的,函数的定义会包括一个称为形参的标识符列表,这些参数在...
    PySong阅读 4,302评论 0 0
  • 1.recode 列表,字典,元祖,集合 列表(list): [];可变,有序;元素是任何类型的数据增:appen...
    PythonLi阅读 1,527评论 0 0
  • 函数只定义一次,但可能被执行或调用任意次。JS函数是参数化的,函数的定义会包括一个称为形参的标识符列表,这些参数在...
    PySong阅读 2,642评论 0 0
  • 函数只定义一次,但可能被执行或调用任意次。JS函数是参数化的,函数的定义会包括一个称为形参的标识符列表,这些参数在...
    PySong阅读 3,627评论 0 0
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 10,150评论 0 5