Python-for循环以及函数(第八讲)

在这里插入图片描述

1.函数

1.函数介绍(熟悉)

    函数的介绍

  • 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
        函数作用:
  • 提高 应用的模块性代码的复用性

2.自定义函数(掌握)

    定义规则:

  • 函数代码块以 def 关键词 开头 ,后接 函数标识符名称圆括号()
  • 圆括号中间 可以 放入参数
  • 函数内容以 冒号 起始,并且 缩进
def function_name(param):
    print(' func code ')

    注意:

  • 函数 只有在调用时才会执行,通过 function_name(param) 进行调用

3.函数的参数

  • 形参与实参
  • 可变类型参数与不可变类型参数位置参数
  • 位置参数
  • 关键字参数
  • 默认值参数
  • 可变长度参数

1.形参与实参

  • 形参 就是 函数定义中的 参数,没有实际的值,通过别人赋值后才有意义,相当于变量。
  • 实参 就是 调用函数时传入的 参数,是一个实际存在的参数。
def function_name(param): # param:形参
    print(' func code ')
function_name(param) # param:实参

2.可变类型参数与不可变类型参数

  • 不可变类型参数在函数体内对变量重新赋值,相当于重新开辟了一块内存来保存值
  • 可变类型参数在函数体内可以改变原有的值

3.位置参数

  • 位置参数也就是实参形参顺序一一对应,而不论变量名

4.关键字参数

  • 形参 = 实参 形式指定,不论参数位置

5.默认值参数

  • 形参处进行赋值,所以当调用时不传该参数就默认使用形参处的值。当调用时传了该参数,则覆盖掉默认参数。

6.可变长度参数

  • *args 接收时会转为元组数据类型
  • **kwargs 接收时会转为字典数据类型

7.解包

  • a,b,c = (1,2,3)

4.函数的返回值介绍

    当两个函数之间,想要互相使用内部变量时,就可以应用到函数的返回值

5.函数的返回值定义

  • 使用 return 关键字返回内容
  • 内容 返回到 函数调用处
  • 函数体中没有 return 语句时,函数运行结束,则默认返回 None,也被称为隐含返回值
def function_name(param):
    return param
res = function_name(param)

    小栗子:

  • 摄氏度与华氏度关系如:摄氏度/1.8 + 32 = 华氏度
        需求:
  • 定义函数1:用于输出摄氏度
  • 定义函数2:通过摄氏度计算得出华氏度
def c():
    c_1 = 14
    print(f'今天天气{c_1}摄氏度')
    return c_1

def f_1(f):
    print(f'今天天气{f//1.8+32}华氏度')
f = c()
f_1(f)

6.函数多个返回值

  • 当执行函数体内代码时,遇到第一个 return 就将指定值返回到函数调用处,也就是执行到return这行代码,后面的都不执行了。
  • 多个返回值时,用逗号隔开,但默认为元组
def function_name(param1,param2):
    return param1, param2
    return param2
res = function_name(param)

7.函数作用域介绍

    Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。
    变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称。Python 的作用域一共有4种,分别是:

  • L(local):局部作用域,即函数中定义的变量;
  • E(enclosing):嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的;
  • G(global):全局变量,就是模块级别定义的变量;
  • B(build-in):内建作用域,系统固定模块里面的变量,比如:int()等;

8.global关键字

    当我们需要在函数内部直接修改全局变量时,我们可以将函数内部的局部变量通过 global 关键字声明为全局变量

9.函数作用域的优先级

在这里插入图片描述

10.递归函数

    递归的介绍

  • 函数Func(args)直接或间接调用函数本身,则该函数称为递归函数
        小栗子:
  • 阶乘本质:n! = 1 * 2 * 3 * … * n
  • 使用递归函数实现阶乘
def fact(n):
    if n == 1:
        return 1
    return n * fact(n - 1)
print(fact(5))

    注意:

  • 递归函数自身没有结束条件,所以需要我们自己设置结束条件,终止函数的调用。
  • 可以使用递归实现的循环都可以实现,并且递归效率很低,所以递归很少使用

2.作业

  • 作业1
    定义一个函数 完成用户输入的三个数字的求和以及在另一个函数求该和的平均值(用到函数传参,函数返回值
def get_he(num1, num2, num3):
    return num1 + num2 + num3
def get_pjz(nums, len_num):
    print(f'用户输入的和为{nums},平均值为{nums/len_num}')
num = tuple(map(float, input('请输入一个数值').split()))
nums = get_he(*num)
get_pjz(nums, len(num))
  • 作业2
    2.将列表l输出如下。l = [“jack”,(“tom”,23),“rose”,(14,55,67)]提示:用递归实现
l = ['jack', ('tom', 23), 'rose', (14, 55, 67)]
def get_l(l):
    for i in l:
        if isinstance(i, tuple): 
        # isinstance(x,(A_tuple)) 如果为tuple则输出
            for a in i:
                get_l(i) # 递归
        else:
            print(i)
get_l(l)

猜你喜欢

转载自blog.csdn.net/weixin_51158247/article/details/112706128