day09--函数的定义分类以及其使用(1)

一、函数的定义以及分类:

  1.   什么是函数:函数是可以重复调用来完成特定功能的代码块。-----(重复利用的工具)
    """
    1 什么是函数?重复利用的工具————可以完成特定功能的代码块
    2 为什么要用函数?
    3 函数的分类:内置函数与自定义函数
    #1、内置函数
    为了方便我们的开发,针对一些简单的功能,python解释器已经为我们定义好了的函数即内置函数。对于内置函数,我们可以拿来就用而无需事先定义,如len(),sum(),max()
    ps:我们将会在最后详细介绍常用的内置函数。
    
    #2、自定义函数
    很明显内置函数所能提供的功能是有限的,这就需要我们自己根据需求,事先定制好我们自己的函数来实现某种功能,以后,在遇到应用场景时,调用自定义的函数即可。例如
    复制代码
    
    4 如何自定义函数:函数在定义阶段只检测语法,不执行代码,代码逻辑错误只会在执行时才知道的
      语法
    
    def 函数名(参数1,参数2,参数3,...):
        '''注释'''
        函数体
        return 返回的值
    
    #函数名要能反映其意义
    定义函数的三种方式:(*****)
      定义有参数函数,及有参函数的应用场景
      定义无参数函数,及无参函数的应用场景
      定义空函数,及空函数的应用场景

    2、函数的组成部分:

    1.   def :是声明函数的关键词
    2.   函数名(fn):函数的名称作为函数在被调用依据(注:函数名需要反映函数的意义)
    3.        ():参数列表,参数个数可以是0到n个,但是()在整个函数中紧随函数名后面一定不能少。
    4.         函数体:作为函数的核心,是完成某项特定功能的代码块。
    5.         return:返回函数的值(函数的返回值也称之为函数值,就是函数执行结束后的结果,可以用变量接受 | 可以直接打印 | 可以直接使用)

# 函数执行的本质:执行函数体,得到函数返回值

def fn():
    print('1')
    print('2')
    return '函数返回值'
    # 写在return 下方的代码,不能执行
# 但是可以在另外分支逻辑下 执行其他代码

   3.  从函数参数列表分类定义函数的方式:

    1.   定义有参函数
def fn(money):
    print('你付了%s元钱' % money)
    print('函数的一行代码')
    print('函数的二行代码')
    return '冰红茶'
# fn直接打印,只能看到函数存放代码的地址
print(fn, id(fn))

       2.  定义无参函数

# 无参函数:函数体运行不需要外界提供参数
def print_msg():
    print("欢迎大家来到老男孩教育,奉献你的余生!!!")

     4.从函数体进行分类:

       1.       定义空函数  

      

# 空函数:项目之初,知道项目有哪些功能,但还没有明确功能体,可以用pass进行函数体填充
def computed():
    pass

       2.      定义非空函数:

# 非空函数:用函数体
def add_num(n1, n2):
    ''' 函数的注释
    :param n1: 第一个数
    :param n2: 第二个数
    :return: 两个数之和
    '''
    return n1 + n2

res = add_num(10, 20)
print(res)

a = 50
b = 100
print(add_num(a, b))

   5.从函数返回值分类:

    1.        没有 return的函数
    2.        空 return 的函数
    3.        空返回
'''
1. 没有return的函数
2. 空return
# 空返回

3. return一个值
4. return多个值
# 值返回
'''

# 空返回

# def fn1():
#     print('fn1 run!!!')
#
# res = fn1()
# print('没有return关键字的返回值:%s' % res)  # None

# def fn2():
#     print('fn2 run!!!')
#     # return
#     # return None

# res = fn2()
# print('空return关键字的返回值:%s' % res)  # None

# 无return函数与空return函数的区别
# 空return:可以根据具体情况主动退出函数(像break结束循环一样)
# def fn3(msg):
#     print('fn3 第一行逻辑')
#
#     # msg信息不正常:'' | None
#     if msg == '' or msg is None:
#         # 结束函数
#         return
#
#     print('msg信息正常: %s' % msg)
#
# msg = input('msg: ')
# fn3(msg)


# 值返回
# 一个值的返回
def add_num(n1, n2):
    return n1 + n2
print(add_num(10, 15))

def computed(n1, n2):
    # 返回四则运算的结果
    r1 = n1 + n2
    r2 = n1 - n2
    r3 = n1 / n2
    r4 = n1 * n2
    return [r1, r2, r3, r4]

a, b, c, d = computed(50, 25)
print(a, b, c, d)


# 多个值的返回: 本质就是返回装有多个值的元组
def computed_sup(n1, n2):
    # 返回四则运算的结果
    r1 = n1 + n2
    r2 = n1 - n2
    r3 = n1 // n2
    r4 = n1 ** n2
    return r1, r2, r3, r4

a, b, c, d = computed_sup(50, 25)
print(a, b, c, d)

res = computed_sup(50, 25)  # 得到的是装有所有结果的元组
print(res)

二、函数调用以及嵌套调用:

  1. 调用函数(先定义后调用)
    1. 如何调用函数
    2. 函数的调用:函数名加括号(先找到名字,根据名字调用函数)
  2. 函数的返回值
    1. 无return->None
    2. return 1个值->返回1个值
    3. return 逗号分隔多个值->元组
  3. 函数的嵌套调用:  就是在一个函数体内调用另外一个函数体(函数在解释时候不执行函数体,只有函数被调用的时候才执行函数体)
def fn1():
    print('fn1 run')
    fn2()

def fn2():
    print('fn2 run')
    fn3()

def fn3():
    print('fn3 run')

# 注:在fn1中调用了fn2,所以调用fn1的逻辑应该在fn2定义之后
fn1()
# 案例:用函数实现获取两个数的最大值
def max_2(n1, n2):
    if n1 > n2:
        return n1
    return n2

print(max_2(200, 30))

# 获取三个数的最大值
# def max_3(n1, n2, n3):
#     if n1 > n2 and n1 > n3:
#         return n1
#     if n2 > n1 and n2 > n3:
#         return n2
#     return n3
def max_3(n1, n2, n3):
    m2 = max_2(n1, n2)
    return max_2(m2, n3)

print(max_3(300, 30, 30))

# 四个数呢?
def max_4(n1, n2, n3, n4):
    m2 = max_2(n1, n2)
    return max_3(m2, n3, n4)
print(max_4(10,30,20,0))

猜你喜欢

转载自www.cnblogs.com/qianzhengkai/p/10630676.html
今日推荐