zoukankan      html  css  js  c++  java
  • python中的函数

    函数 Function

    在计算机中称之为函数,在现实生活中称之为功能。 函数是能够实现特定功能的计算机代码,它是一种特定的代码组结构。

    函数的作用


    1.提高代码的重复利用率,避免重复开发相同代码

    2.提高程序的开发效率

    3.便于程序维护

    函数名的命名规则,和变量基本一样:


    1.推荐使用英文,禁止使用中文

    2.可以使用数字,但不能以数字开头

    3.不可以使用特殊字符,除了下划线_

    4.函数名严格区分大小写

    5.函数名必须要有意义

    6.不能和系统保留关键字冲突

    函数的定义


    1.基本格式:

    def 函数名():
        pass
    

    示例:

    #定义函数
    def funName():
        pass #此处编写功能代码
    

    funName() #调用

    ‘’‘注释:
    函数的特征:函数定义之后,不会自动执行,只会在调用的时候执行。不调用,不执行。
    ‘’’

    2.带有参数的格式:

    def 函数名(参数1,参数2...):
        pass
    

    示例:

    #定义带有参数的函数
    def funName(arg):
        print('接收到的参数:',arg)
    

    funName(666) #调用

    ‘’‘注释:
    形参:形式上的参数,声明函数时,括号()中的参数,是形参。
    实参:实际上的参数,调用函数是,括号()中的参数,是实参。
    实参将值传递给形参的本质过程,本质上就是简单的变量赋值。
    ‘’’

    3.带有默认值的参数的格式:

    def 函数名(参数1 = 值1,参数2 = 值2...):
        pass
    

    示例:

    #定义带有默认值参数的函数
    def funName(arg = 'jack'):
        print('参数值:',arg)
    

    funName() #调用方式一
    funName(‘mark’) #调用方式二 调用时传的参数会覆盖默认值

    ‘’‘注释:
    如果形参有默认值,调用时可以不需要传参,系统会直接使用参数的默认值。
    调用时给有默认值的参数传参,实参会覆盖形参的默认值。本质上就是变量的重新赋值。
    ‘’’

    4.使用关键字参数格式:

    函数名(形参1 = 实参1,形参2 = 实参2...)
    

    示例:

    #定义带有默认值参数的函数
    def funName(name = 'jack',age = 18,sex = 'man'):
    print('name:',name)
    print('age:',age)
    print('sex:',sex)
    

    funName(8,‘二狗’,‘Superman’) #参数较多时赋值顺序颠倒,将会影响程序执行结果
    funName(age = 8,name = ‘二狗’,sex = ‘Superman’) #关键字参数赋值完美解决上面的问题

    ‘’‘注释:
    关键字参数就是调用函数时,在实参前面指定形参的做法,为了防止参数按照位置传递出现的错误。
    ‘’’

    5.收集参数使用方法:

    收集参数可以收集的参数不受数量限制

    1)非关键字收集参数

    def 函数名(*参数名):
        pass
    

    示例:

    #定义带有非关键字收集参数的函数
    def funName(*arg):
        for v in arg: #遍历
            print(v)
    

    funName(1,2,3,‘a’,‘b’,‘c’) #调用

    ‘’‘注释:
    1.非关键字收集参数,在形参前添加一个*即可
    2.非关键字收集参数,收集的实参会组成一个元组
    3.非关键字收集参数,接受没有任何形参接受的非关键字实参
    4.非关键字收集参数,可以和普通的形参共存
    ‘’’

    2) 关键字收集参数

    def 函数名(**参数名):
        pass
    

    示例:

    #定义带有关键字收集参数的函数
    def funName(**car):
        for v in car: #遍历
            print(v,'value : ',car[v])
    

    funName(a = ‘卡车’,b = ‘火车’,c = ‘公交车’) #调用

    ‘’‘注释:
    1.关键字收集参数,在形参前添加两个*
    2.关键字收集参数,收集的实参会组成一个字典,形参名作为键,值作为值
    3.关键字收集参数,仅接收没有任何形参接收的关键字参数
    4.关键字收集参数,可以和普通的形参共存
    ‘’’

    多种参数混合使用应当注意的 定义函数时尽量避免多种参数格式混合(普通参数,关键字参数,两种收集参数) 1.普通参数和关键字参数必须在两种收集参数之前 2.非关键字收集参数,必须在关键字收集参数之前 3.如果多种参数混合在一起用,必须注意禁止参数多次赋值操作(普通参数赋值在前,关键字参数赋值在后)

    函数的返回值


    根据执行函数完毕是否可以得到一个结果,我们可以将函数分为两种类型。

    执行过程函数:
        函数执行完毕之后,接收不到任何返回结果的函数。如:print()
    

    具有返回值得函数:
    函数执行完毕之后,会产生一个结果,可以被接收和使用的函数。如:type()

    格式:

    def 函数名(参数...):
        Python code...
        return 返回值 #有return的函数,就是有返回值的函数
    
    变量名 = 函数名(参数...)  #我们可以通过一个变量去接收函数的返回值
    
    '''注释:
    1.具有return语句的函数,我们称之为具有返回值的函数
    2.return可以为当前函数执行完毕的函数返回一个结果,这个返回值可以用变量接收
    3.return执行之后,函数将会终止,所以return之后的语句是不会被执行的
    4.一个函数可以使用多个return语句,但是只有一个会被执行,一般都是放入分支结构中
    5.一个函数如果需要返回多个数据,使用复合数据类型(list,tuple,set,dict)来操作即可
    '''
    

    递归函数


    在函数内调用当前函数本身的函数就是递归函数

    定义递归函数

    #定义一个递归函数
    def tubie(num):
        #1.输出num
        print(num)
        #2.判断条件,不改变num
        if num >0:
            tubie(num-1)
        else:
            print('================')
        #3.输出num
        print(num)
    #调用递归函数
    tubie(3)
    

    执行结果

    在这里插入图片描述

    为什么会有0123呢?

    注意:函数执行完毕会回到调用处,而不是执行完了就直接停那儿了。
    例:
    回家睡觉的顺序应该是:家门->客厅->卧室->床
    睡完出门的顺序也应该是:床->卧室->客厅->家门
    

    图解

    在这里插入图片描述

  • 相关阅读:
    Gogs http和ssh地址显示localhost的问题
    SQL Server从读写频繁的大表中删除大批量数据
    Java Spring Boot: Unable to determine jdbc url from datasource
    NPOI导入Excel日期格式的处理
    手把手教你整合最优雅SSM框架
    JDBC链接数据库MySQL 8.0 Public Key Retrieval is not allowed 错误的解决方法
    Vim 入门教程
    jquery.i18n.properties前端国际化方案
    生产者消费者模式中条件判断是使用while而不是if
    ThreadPoolExecutor 中的 shutdown() 、 shutdownNow() 、 awaitTermination() 的用法和区别
  • 原文地址:https://www.cnblogs.com/victorfengming/p/11931058.html
Copyright © 2011-2022 走看看