介绍
概述
函数也叫方法, 可以用单词 Function(函数, 功能), Method(方法) 来表示.函数 = 把具有独立功能的代码封装到一起, 使其成为具有特殊功能的 代码集.
好处
-
提到代码的复用性.
-
模块化编程.
格式
def 函数名(形式参数1, 形参2...): 函数体, 就是以前写的逻辑代码, if, for... return 具体的返回值
格式解释:def defined单词的缩写, 表示: 定义1个函数.函数名 方便我们调用函数的, 起名时最好做到 见名知意.get_max(),get_sum()形参参数 简称叫: 形参, 形容调用函数需要传入什么值.函数体 表示该函数要完成什么功能, 就是以前我们写的逻辑代码, if, for...return 作用1(主职): 结束函数的. 作用2(兼职): 可以返回函数的执行结果.
调用格式
-
写 函数名()
-
传参. 这里写的是 实参(实际参数), 表示: 实际参与运算的数据.
-
接收返回值 如果有的话.
细节
-
函数必须先定义, 然后才能调用.
-
函数只有被调用, 才会执行.
代码演示
def call(): print('----- 拨号 -----') print('(拨号方)手机发送信号包到 就近的基站') print('(拨号方)就近的基站 解析信号包, 然后通过地下电缆 发送信号包到 接收方就近的基站') print('(接收方就近的基站 发送信号包 到 (接收方)手机') print('(接收方)手机解析信号包...') print('(接收方)盲音等待 ...') # 具体的打电话动作. call() # 需求4: 给 王宝强 打电话... call()
说明文档
概念
概述: 你可以理解为就是函数的 注释, 帮助程序员快速认识函数的作用的.
格式
格式: 在函数内部的第一行, 直接用 三引号包裹即可.
演示
# 需求: 定义函数 get_sum(a, b), 求两个整数的和. def get_sum(a, b): """ 自定义函数, 用于计算 两个整数的 和 :param a: 要求和计算的第1个整数 :param b: 要求和计算的第2个整数 :return: 返回a和b的 求和结果 """ sum = a + b return sum sum = get_sum(10, 20) print(f'求和结果为: {sum}') print('-' * 30) # 也可以查看函数的说明文档. help(get_sum)
参数介绍
细节
-
函数 根据 参数 和 返回值不同, 主要分为 如下的四种写法:
1. 无参无返回值. 2. 有参无返回值. 3. 无参有返回值. 4. 有参有返回值.
-
定义函数的时候, 写的参数列表叫: 形参, 形容调用函数, 需要传入什么值.
-
调用函数的时候, 写的参数列表叫: 实参, 表示调用函数时, 实际参与运算的数据.
-
函数只有被调用, 才会执行.
演示
# 需求1: 定义函数 get_sum(), 用于计算两个整数和, 并打印结果. # 写法1: 无参无返回值. def get_sum(): sum = 10 + 20 print(f'求和结果为: {sum}') return # 方法的最后一行, 默认都有1个return, 表示结束方法, 并默认返回None # 调用函数. get_sum() print('-' * 30) # 写法2: 有参无返回值. 因为上述的函数只能计算整数 10 和 20的求和结果, 不够灵活. def get_sum2(a, b): # a,b充当的作色是 形参. """ 自定义函数, 用于计算两个整数和. :param a: 求合计计算用到的第 1个整数 :param b: 求合计计算用到的第 2个整数 :return: 空 """ sum = a + b print(f'求和结果为: {sum}') return # 方法的最后一行, 默认都有1个return, 表示结束方法, 并默认返回None 打印求和结果. # 调用函数. get_sum2(1, 2) # 1 和 2在这里充当的是: 实参(实际参数) get_sum2(10, 20) # 10 和 20在这里充当的是: 实参(实际参数) print("-" * 30) # 需求2: 定义函数, 完成 前两个数求和, 对第3个数进行减法运算, 调用, 并测试该函数. def get_sum3(a, b, c): # 形参. """ 自定义函数, 完成 n1 + n2 - n3的 :param a: 要求和的第1个数 :param b: 要求和的第2个数 :param c: 进行减法运算的数字 :return: 无 """ result = a + b - c print(result) # 调用 get_sum3()函数 get_sum3(10, 20, 5) # 实参(实际参与运算的数字), 25.
函数返回值
介绍
概述: 返回值指的是 函数执行完毕后, 需要返回给 调用者一个什么样的结果.格式: 在函数内部写, return 具体的返回值即可.需求: 定义get_sum(), 用于计算两个整数和.
演示
# 需求: 定义get_sum(), 用于计算两个整数和. # 1. 定义get_sum()函数. def get_sum(a, b): # a, b 形参, 形容调用函数, 需要传入是什么样的值. """ 自定义函数, 计算两个整数的和. :param a: 求和运算的第1个整数 :param b: 求和运算的第2个整数 :return: 求和结果. """ # 具体的求和过程 sum = a + b # 返回求和结果 return sum # 2. 调用函数. sum = get_sum(10, 20) print(f'求和结果为: {sum}')
函数嵌套调用
介绍
概述: 函数的嵌套调用指的是 在一个函数中, 去调用另一个函数.
执行流程: 根据入栈的顺序, 进行执行的.
演示
# 需求: 观察如下的代码, 看其执行结果是什么. # 1. 定义 fun01 函数 def fun01(): print('--- fun01 start ---') print('hello world!') print('--- fun01 end ---') # 2. 定义 fun02 函数 def fun02(): print('--- fun02 start ---') # 在 fun02()函数内, 调用 fun01()函数, 这就叫: 函数的嵌套调用. fun01() print('--- fun02 end ---') # 3. 调用函数. # fun01() fun02()
函数的应用
打印图形
# 定义函数打印一行 def print_line(cols, char): for i in range(cols): print(char, end='\t') print() # 定义函数打印多行 def print_lines(rows, cols, char): for i in range(rows): print_line(cols, char) print_lines(5, 5, '@')
计算平均值
def get_sum(a, b, c): return a + b + c def get_avg(a, b, c): return get_sum(a, b, c) / 3 print(get_avg(3, 4, 5))
变量的作用域
变量的作用域指的是 变量的作用范围, 即: 变量在哪里能用, 在哪里不能用.
局部变量
定义到函数的形参列表, 或者 函数内的变量.
只能在函数内部使用, 出了函数就用不了了.
生命周期: 随着函数的调用而存在, 函数的调用完毕而消失.
全局变量
-
定义到函数外的变量, 或者 用 global 修饰的变量.
-
在当前模块中的函数, 都可以使用.
-
生命周期: 随着模块的加载而存在, 模块的卸载而消失.
global关键字介绍:
被它修饰的变量 => 全局变量, 可以实现, 定义 函数内的变量, 在函数外使用.
演示
# 需求1: 演示变量的生命周期 -> 局部变量. def fun01(): a = 10 # 局部变量 print(f'函数内 a: {a}') # 需求2: 演示变量的生命周期 -> 全局变量. b = 30 # 全局变量 def fun02(): global c # 局部变量 => 全局变量 c = 100 # 全局变量 print(f'函数内 b: {b}') print(f'函数内 c: {c}') # main函数, 程序的主入口. if __name__ == '__main__': # 调用函数. fun01() # 函数外, 尝试调用 fun01()函数内的 局部变量 a # print(f'函数外 a: {a}') 报错, 超出了 局部变量的 生命周期. print('-' * 30) fun02() print(f'函数外 b: {b}') print(f'函数外 c: {c}')
练习题
# 需求: 观察如下的代码, 看其打印结果是什么. a = 100 def fun01(): print(f'fun01函数 a: {a}') def fun02(): # global a a = 200 print(f'fun02函数 a: {a}') # 使用变量遵循 就近原则, 局部位置有就用, 没有就去当前脚本的全局位置找, 有就用, 没有就报错. if __name__ == '__main__': fun01() # 100 fun02() # 200 fun01() # 100
多函数程序执行流程
1个函数的返回结果, 可以作为另一个函数的 参数.
演示
# 1. 定义函数, 返回1个整数. def get_number(): return 30 # 2. 定义函数, 传入1个整数, 判断其奇偶性. def is_odd(n): if n % 2 == 0: print(f'{n} 是偶数!') else: print(f'{n} 是奇数!') # 3. 测试上述的函数. if __name__ == '__main__': # 分解版写法 # 3.1 获取整数 n = get_number() # n = 30 # 3.2 把 n(1个函数的返回值) 作为 is_odd()函数的参数进行传递. is_odd(10) is_odd(11) is_odd(n) print('-' * 30) # 合并版. is_odd(get_number()) # 细节: 函数的返回值, 可以作为另一个函数的参数. print('-' * 30) # 拔高, 函数名 可以作为 对象使用. # n = get_number() # 函数名() 表示在 调用函数. my_fun = get_number # 函数名, 可以作为对象使用. 即: 现在写 my_fun() 和 get_number() 是一样的. n = my_fun() print(n) # 30标签:return,函数,get,python,sum,day04,入门篇,print,def From: https://blog.csdn.net/m0_60916732/article/details/141268163