• Python函数的概念以及定义方式


    一. 前言

    嗨喽~大家好呀,这里是魔王呐 ❤ ~!

    python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取

    二. 什么是函数?

    假设你现在是一个工人,如果你实现就准备好了工具,等你接收到任务的时候,

    直接带上工具就可以工作了,而不是临时去制作。

    在程序中,函数就是具备某一功能的工具,实现将工具准备好就是函数的定义,

    遇到应用场景将工具拿来用,就是函数的调用。

    三. 为什么要使用函数

    如果不使用函数,写程序时会遇到这三个问题:

    • 程序冗长,组织结构不清晰,可读性差

    • 程序的扩展性差

    • 程序的可维护性差

    四. 如何用函数

    函数的使用遵循一个原则:先定义函数,然后调用它

    定义函数

    def 函数名(param1、param2……):
        """
        函数功能的描述信息
        :param1:描述参数
        :param2:描述参数
        :return:返回值
        """
        code 1
        code 2
        code 3
        ...
    
        return 返回值
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    调用函数

    函数名(param1、param2……)
    
    • 1
    1 登录注册功能的函数
    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    # 注册功能函数
    def register():
        """注册功能"""
        username = input('username: ').strip()
        pwd = input('password: ').strip()
    
        with open('user.txt', 'a', encoding='utf8') as fa:
            fa.write(f"{username}:{pwd}\n")
            fa.flush()
    register()
    
    # 登录功能函数
    def login():
        """登录功能"""
        inp_username = input('username: ').strip()
        inp_pwd = input('password: ').strip()
    
        with open('user.txt', 'rt', encoding='utf8') as fr:
            for user_info in fr:
                user_info = user_info.strip('\n')
                user_info_list = user_info.split(':')
                if inp_username == user_info_list[0] and inp_pwd == user_info_list[1]:
                    print('login successful')
                    break
            else:
                print('failed')
    login()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    2 函数的定义阶段
    def func():
        bar()  # 不属于语法错误,不会报错
        print('*'*10)
    
    • 1
    • 2
    • 3

    在函数的定义阶:

    • 申请内存空间保存函数体代码

    • 将函数体绑定给函数名

    • 定义阶段不会执行函数体代码,但是会检测函数体的语法

    3 函数的调用阶段
    def bar():
        print('from bar')
    
    def foo():
        print('from foo')
        bar()
    
    foo()
    '''
    from foo
    from bar
    '''
    def foo():
        print('from foo')
        bar()
        
    def bar():
        print('from bar')
    
    foo()
    '''rom foo
    from bar
    '''
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    函数调用阶段:

    1. 通过函数名找到函数的内存地址

    2. 然后加括号就是在出发函数体代码并执行

    五. 定义函数的三种形式

    1 无参函数

    定义函数时参数是函数体接收外部传值的一种媒介,其实就是一个变量名

    在函数定义阶段,括号内没有参数,称为无参函数。需要注意的是:定义的时候是无参函数,调用的时候也不用传入参数。

    如果函数体代码逻辑不需要依赖外部传入的值,则必须定义成无参函数。

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    def func():
        print('hello lwx')
    
    func()
    
    # hello lwx
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    2 有参函数

    在函数定义阶段,括号内有参数,称为有参函数。需要注意的是,定义时有参数,调用的时候也必须传入参数。

    如果函数体代码逻辑需要依赖外部传入的值,那么必须定义成有参函数。

    def  sum_self(x,y):
        res = x+y
        print(res)
    
    sum_self(520,1314)
    
    # 1834
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    3 空函数

    当你只知道你需要。实现的某个功能,但是不知道如何使用代码实现时,你可以暂时写一个空函数,也就是函数体没有代码,但是我们函数不可以没有函数题,所以就用pass代替,跳过这个函数,先去实现其他的功能。

    def func():
    	pass
    
    • 1
    • 2
    4 三种定义方式应用场景

    无参函数应用场景

    用于无需外部传值的场景:

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    def add():
        x= float(input('num_x:'))
        y= float(input('num_y:'))
        res = x+y
        print(res)
    add()
    add()
    
    # num_x:10
    # num_y:10
    # 20.0
    # num_x:10
    # num_y:20
    # 30.0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    有参函数应用场景

    用于需要接收外部传入值的场景

    def add(x,y):
        res = x+y
        print(res)
    add(10,20)
    add(10,30)
    
    # 30
    # 40
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    空函数应用场景

    先进性构思,列出程序的骨架,然后补全

    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    def login():
        pass
    
    def shopping():
        pass
    
    def exit():
        pass
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    六. 调用函数

    1 什么是函数调用

    函数名()就是函数的调用,会执行函数体代码,直到遇到return或执行完函数体内所有代码才结束

    函数运行完毕所有代码, 如果函数体不写return,则会返回Nore

    函数名()就是函数的调用,会执行函数体代码,直到遇到return或执行完函数体内所有代码才结束

    函数运行完毕所有代码, 如果函数体不写return,则会返回Nore

    def a():
        pass
    
    print(a())
    
    # None
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    2 为什么用函数调用?

    方便实用函数的功能,也可以当做参数使用4

    3 函数调用的三种形式
    '''
    遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    def max_self(x,y):
        if x > y:
            return x
        else:
            return y
    #第一种
    max_self(1,2)
    #第二种
    res = max_self(1,2)*12
    #第三种
    max_self(max_self(20000,30000),40000)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    七. 函数的返回值

    return是函数结束的标志,即函数体一旦遇到return会立刻终止函数的运行并且会将return后面的值当做本次运行的结果返回

    1 返回值为none:函数体没有返回值
    def func():
        return
        #return none
    
    • 1
    • 2
    • 3
    2 返回一个值:return 值
    def func():
        return  0
    
    • 1
    • 2
    3 返回多个值

    用逗号隔开多个值,会被return返回为元组的形式

    def func():
        return 10,'a',[1,2,3]
    res = func()
    print(res,type(res))
    # (10, 'a', [1, 2, 3]) <class 'tuple'>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    尾语

    最后感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

    希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

    躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

    最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇

  • 相关阅读:
    Vue学习笔记
    node插件MongoDB(三)—— 库mongoose 的使用和数据类型(一)
    基于低代码平台的疫情管理系统,源码交付更放心
    使用EasyExcel 导入数据,失败原因数据导出
    CAPL中的CAN消息:声明、发送和接收
    【Web前端】自制精简版的思源黑体ttf(728kb) - 包含2630个常用汉字+字母+数字+常用符号
    iOS上架app store详细教材
    php单独使用think-rom数据库 | thinkphp手动关闭数据库连接
    文库 | 数据库查询语言的进化与前沿实践探讨
    2030:【例4.16】找素数 (信奥一本通)
  • 原文地址:https://blog.csdn.net/python56123/article/details/132758296