day11-函数

函数

一、定义函数

  1. 什么是函数?

    ​ 函数就是某一特定功能的代码封装。

    ​ 函数将实现某一个或者某一类功能的代码打包成一个包,以后需要这包中的代码对应的功能的时候不需要重新写这段代码,而是使用封装了这段代码的函数。

  2. 函数的分类

    ​ 根据这个函数是由谁创建的,我们将函数分为系统函数和自定义函数两种。

    ​ 1)系统函数(别人已经造好的机器) —— 由系统创建的函数(Python本身就创建好的函数),例如:print、input、type、max、min等。

    ​ 2)自定义函数(自己造的机器) —— 由程序员自己创建的函数。

  3. 定义函数

    def 函数名(形参列表):
        函数说明文档
        函数体
    

    说明:

    ​ 1)def —— 关键字:固定写法;

    ​ 2)函数名 —— 由程序员自己命名;

    ​ 两个要求:是标识符(字母、数字、下划线);不是关键字。

    ​ 三个规范:a、见名知义(看到函数名就大概知道函数的功能是什么); b、所有的字母都小写,多个单词用下划线隔开; c、不使用系统的函数名、类名、模块名。

    ​ 3)() —— 固定写法;

    ​ 4)形参列表 —— 以’变量名1,变量名2,变量名3,…'的形式存在,根据情况变量的数据可以为0(每一个变量就是一个形参)。

    ​ 形参的作用:形参的作用:将函数外部的数据传递到函数里面。

    ​ 确定形参的方法:看实现函数的功能需不需要额外的数据,需要多少个额外的数据。

    ​ 5)函数说明文档 —— 就是多行注释(相当于生活中机器的说明书)

    def factorial(num):
        '''
            (功能说明区) 求一个函数的阶乘:num!
            :param num: (参数说明区)求阶乘的对象
            :return: (返回值说明)None
        '''
        sum1=1
        for i in range(1,num+1):
            sum1 *= i
        print(sum1)
    

    ​ 6)函数体 —— 结构上,和def保持一个缩进的一条或者多条语句。

    ​ 逻辑上,函数体就是实现函数功能的代码。

二、调用函数

  1. 函数的调用

    函数名(实参列表)
    

    说明:

    1)函数名 —— 需要哪个函数对应的功能,就调用哪个函数;想要调用哪个函数就写哪个函数的函数名。

    ​ 注意:函数名必须是已经定义过的函数的函数名。

    2)() —— 固定写法。

    3)实参列表 —— 以’数据1,数据2,数据3,…'的形式存在,这儿的每个数据就是一个实参(实参对应的数据可以是任何有结果的表达式) 。

    ​ 实参是用来给形参赋值的,在提供实参的时候要保证和形参一一对应。

    ​ 变量名1,变量名2,变量名3,…=数据1,数据2,数据3,… —>形参 = 实参

    注意:定义函数不会执行函数体,调用的时候才会执行。

  2. 函数调用过程

    调用函数的步骤:

    ​ a、回到函数定义的位置;

    ​ b、传参(用实参给形参赋值,传参的时候必须保证每个形参都有值);

    ​ c、执行函数体;

    ​ d、确定函数返回值;

    ​ e、回到函数调用的位置,接着往后执行。

    例如:'man闪烁234' -> 3
    def count_nums(str1):
        count=0
        for i in str1:
            if i.isdigit():
                count+=1
        print(count)
    

三、函数的参数

  1. 位置参数和关键字参数

    根据实参的提供方式将实参分为位置参数和关键字参数两种。

    ​ 1)位置参数:以’实参1,实参2,实参3,…'的形式存在,让实参和形参从位置上一一对应。

    ​ 2)关键字参数:以’形参1=实参1,形参2=实参2,…‘的形式存在,通过’='将实参和形参一一对应。

    注意:位置参数和关键字参数可以一起用,但是保证位置参数在关键字参数前面。

    def func1(x, y, z):
        print(f'x:{x},y:{y},z:{z}')
    
    func1(10, 20, 30)  # 位置参数
    func1(x=10, y=20, z=30)  # 关键字参数
    
  2. 参数默认值

    ​ 定义函数的时候可以通过’形参名=数据’的方式给形参赋默认值。

    ​ 在调用函数的时候,有默认值的参数可以不用传参。

    注意:a、定义函数的时候,如果一个函数有的参数有默认值,有的参数没有默认值,没有默认值的参数必须在有默认值的形参前面。

    ​ b、如果想要跳过前面有默认值的参数,直接给后面的参数赋值,使用关键字参数传参。

    def func2(x=100, y=20, z=30):
        pass
    func(z=300)
    
  3. 参数类型说明

    1)没有默认值参数类型的说明:直接在形参后面加’:类型名’;

    2)有默认值的参数前,默认值数据对应的类型就是这个形参的类型。

    def func5(x:str,y='') -> str:
        return x.strip()
    
  4. *对应的不定长参数

    1)参数不确定,可以使用不定长参数

    ​ 定义函数的时候,如果在某一形参前面加*,那么这个形参就会变成一个不定长参数,他可以接收多个实参(可以是0个、1个、2个、…10个…)。

    ​ 带*的不定长参数的本质是一个元组,它接受到的所有的实参是这个元组中的元素。

    # 定义函数求多个数的和
    def sumN(num1,num2,*nums):   # 求和的时候至少给两个参数
        sum1=0
        sum1=num1+num2
        for i in nums:
            sum1+=i
        print(sum1)
    sumN(10,20)
    sumN(10,20,155,20,30)
    

    2)定义函数的时候单独使用*

    ​ 如果定义函数的时候,形参列表中有一个独立的*,调用函数的时候*后面的所有的形参必须使用关键字参数传参。

    def func2(x,*y,z,t):
        pass
    func2(10,20,30,z=100,t=500)
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值