• 函数4.1函数


    一、是什么

    函数:一个功能独立的代码块

    示例:

    # 定义一个函数,能够完成打印信息的功能
    def print_info():
        print('------------------------------------')
        print('         人生苦短,我用Python         ')
        print('------------------------------------')
    

      

    二、作用

    函数在编程中是非常重要的一个知识点,答的大体功能如下

    • 能够将部分代码划分为一个整体的功能
    • 只需定义函数1次就可以使用N次,可以大大减少了代码的冗余
    • 代码看上去更加整洁美观

    示例1:未使用函数

    如下通过print输出了2遍“佛祖镇楼”

    # 输出第1遍 佛祖镇楼
    print("                            _ooOoo_  ")
    print("                           o8888888o  ")
    print("                           88  .  88  ")
    print("                           (| -_- |)  ")
    print("                            O\\ = /O  ")
    print("                        ____/`---'\\____  ")
    print("                      .   ' \\| |// `.  ")
    print("                       / \\||| : |||// \\  ")
    print("                     / _||||| -:- |||||- \\  ")
    print("                       | | \\\\\\ - /// | |  ")
    print("                     | \\_| ''\\---/'' | |  ")
    print("                      \\ .-\\__ `-` ___/-. /  ")
    print("                   ___`. .' /--.--\\ `. . __  ")
    print("                ."" '< `.___\\_<|>_/___.' >'"".  ")
    print("               | | : `- \\`.;`\\ _ /`;.`/ - ` : | |  ")
    print("                 \\ \\ `-. \\_ __\\ /__ _/ .-` / /  ")
    print("         ======`-.____`-.___\\_____/___.-`____.-'======  ")
    print("                            `=---='  ")
    print("  ")
    print("         .............................................  ")
    print("                  佛祖镇楼                  BUG辟易  ")
    print("          佛曰:  ")
    print("                  写字楼里写字间,写字间里程序员;  ")
    print("                  程序人员写程序,又拿程序换酒钱。  ")
    print("                  酒醒只在网上坐,酒醉还来网下眠;  ")
    print("                  酒醉酒醒日复日,网上网下年复年。  ")
    print("                  但愿老死电脑间,不愿鞠躬老板前;  ")
    print("                  奔驰宝马贵者趣,公交自行程序员。  ")
    print("                  别人笑我忒疯癫,我笑自己命太贱;  ")
    print("                  不见满街漂亮妹,哪个归得程序员?")
    
    # 输出第2遍 佛祖镇楼
    print("                            _ooOoo_  ")
    print("                           o8888888o  ")
    print("                           88  .  88  ")
    print("                           (| -_- |)  ")
    print("                            O\\ = /O  ")
    print("                        ____/`---'\\____  ")
    print("                      .   ' \\| |// `.  ")
    print("                       / \\||| : |||// \\  ")
    print("                     / _||||| -:- |||||- \\  ")
    print("                       | | \\\\\\ - /// | |  ")
    print("                     | \\_| ''\\---/'' | |  ")
    print("                      \\ .-\\__ `-` ___/-. /  ")
    print("                   ___`. .' /--.--\\ `. . __  ")
    print("                ."" '< `.___\\_<|>_/___.' >'"".  ")
    print("               | | : `- \\`.;`\\ _ /`;.`/ - ` : | |  ")
    print("                 \\ \\ `-. \\_ __\\ /__ _/ .-` / /  ")
    print("         ======`-.____`-.___\\_____/___.-`____.-'======  ")
    print("                            `=---='  ")
    print("  ")
    print("         .............................................  ")
    print("                  佛祖镇楼                  BUG辟易  ")
    print("          佛曰:  ")
    print("                  写字楼里写字间,写字间里程序员;  ")
    print("                  程序人员写程序,又拿程序换酒钱。  ")
    print("                  酒醒只在网上坐,酒醉还来网下眠;  ")
    print("                  酒醉酒醒日复日,网上网下年复年。  ")
    print("                  但愿老死电脑间,不愿鞠躬老板前;  ")
    print("                  奔驰宝马贵者趣,公交自行程序员。  ")
    print("                  别人笑我忒疯癫,我笑自己命太贱;  ")
    print("                  不见满街漂亮妹,哪个归得程序员?")
    

      

    示例2:使用函数

    如下通过函数输出了2遍“佛祖镇楼”

    # 定义一个函数,完成了独立输出“佛祖镇楼”的功能
    def print_fozu():
        print("                            _ooOoo_  ")
        print("                           o8888888o  ")
        print("                           88  .  88  ")
        print("                           (| -_- |)  ")
        print("                            O\\ = /O  ")
        print("                        ____/`---'\\____  ")
        print("                      .   ' \\| |// `.  ")
        print("                       / \\||| : |||// \\  ")
        print("                     / _||||| -:- |||||- \\  ")
        print("                       | | \\\\\\ - /// | |  ")
        print("                     | \\_| ''\\---/'' | |  ")
        print("                      \\ .-\\__ `-` ___/-. /  ")
        print("                   ___`. .' /--.--\\ `. . __  ")
        print("                ."" '< `.___\\_<|>_/___.' >'"".  ")
        print("               | | : `- \\`.;`\\ _ /`;.`/ - ` : | |  ")
        print("                 \\ \\ `-. \\_ __\\ /__ _/ .-` / /  ")
        print("         ======`-.____`-.___\\_____/___.-`____.-'======  ")
        print("                            `=---='  ")
        print("  ")
        print("         .............................................  ")
        print("                  佛祖镇楼                  BUG辟易  ")
        print("          佛曰:  ")
        print("                  写字楼里写字间,写字间里程序员;  ")
        print("                  程序人员写程序,又拿程序换酒钱。  ")
        print("                  酒醒只在网上坐,酒醉还来网下眠;  ")
        print("                  酒醉酒醒日复日,网上网下年复年。  ")
        print("                  但愿老死电脑间,不愿鞠躬老板前;  ")
        print("                  奔驰宝马贵者趣,公交自行程序员。  ")
        print("                  别人笑我忒疯癫,我笑自己命太贱;  ")
        print("                  不见满街漂亮妹,哪个归得程序员?")
    
    # 调用2次函数,每次输出1个佛祖镇楼
    print_fozu()
    print_fozu()
    

      

    三、分类

    函数根据是否是自己编写可以分为2类

    • 别人已经写好拿来直接用的函数,成为包括Python内置函数或者第三方包中的函数,更省事
    • 开发者自己编写的函数(通常称为自定义函数);根据需要自己编写,更灵活

    在整个函数相关知识学习中,我们主要以研究“自定义函数”为主,当“自定义函数”都弄明白了弄懂了,那么用别人的写好的函数就信手拈来了

    四、自定义函数

    上面的知识我们知道,函数就是一个独立功能的代码块,想要用函数一定要掌握2块知识

    • 定义函数(即怎样制作函数)
    • 调用函数(即怎样使用函数)

    下面我们就来研究函数的定义以及调用

    1. 定义函数

    定义函数格式如下:

    def 函数名(形参):
        函数体
    

      

    说明:

    • 函数名:一定有,按照命名规则起个名字,注意Python中建议使用“小写加下划线”的方式,例如print_info而不用PrintInfo
    • 函数体:一定有,就是整个函数真正要执行的代码,注意函数体前面缩进4个空格
    • 形参:可有可无,专门用过来存储调用时传递给函数的数据用的

    2. 示例

    下面定义一个函数,完成打印菜单的功能

    def print_menu():
        print("-----------------------")
        print("        欢迎光临        ")
        print("数字1: 黄瓜炒肉")
        print("数字2: 冬瓜炒肉")
        print("数字3: 西瓜炒肉")
        print("数字4: 南瓜炒肉")
        print("数字5: 北瓜炒肉")
        print("-----------------------")
    

      

    说明:

    • 函数名:print_menu
    • 函数体:第2~9行的代码
    • 形参:无

    注意:

    • 定义了函数,这个函数不会被执行。就好比你发明了一个功能,这个功能不能自己用自己,必须等待别人使用才行,如果想让函数执行,就需要调用函数

    3. 调用函数

    通俗的讲:定义函数相当于打造了一个工具,调用函数相当于使用这个工具完成想要做的事情

    调用函数的格式如下

    函数名(实参)
    

      

    说明:

    • 函数名:一定有,想要调用的函数的名字
    • 实参:可有可无,调用函数时给它传递的数据

    注意:

    • 调用的函数的名字必须是先定义好的才能够调用,否则会失败

    4. 示例

    # 定义了一个函数,实现打印菜单功能
    def print_menu():
        print("-----------------------")
        print("        欢迎光临        ")
        print("数字1: 黄瓜炒肉")
        print("数字2: 冬瓜炒肉")
        print("数字3: 西瓜炒肉")
        print("数字4: 南瓜炒肉")
        print("数字5: 北瓜炒肉")
        print("-----------------------")
    
    # 调用函数
    print_menu()
    

      

    运行结果:

    -----------------------
            欢迎光临
    数字1: 黄瓜炒肉
    数字2: 冬瓜炒肉
    数字3: 西瓜炒肉
    数字4: 南瓜炒肉
    数字5: 北瓜炒肉
    -----------------------
    

      

    说明:

    • 函数定义一定要在函数的调用之前,其原因:Python解释器在解析.py文件时会从文件的开头开始解析,会先遇到函数的定义,然后当遇到函数的调用时就知道它在哪,所以函数要先定义才能调用

    5. pass

    如果一个函数,暂时不确定函数体的代码,可以用pass先占用位置,这样即没有语法错误,也能够让开发人员知道 这个函数功能没有实现,可以在后面进行编写

    def 函数名():
        passs
    

      

    示例:要定义4个函数,实现加减乘除的功能,但还不清楚具体功能怎样写,此时就可以用pass

    # 定义了4个函数
    def add_2_nums():
        pass
    
    
    def min_2_nums():
        pass
    
    
    def mult_2_nums():
        pass
    
    
    def div_2_nums():
        pass
    
    
    # 分别调用函数
    add_2_nums()
    min_2_nums()
    mult_2_nums()
    div_2_nums()
    

      

    如果想清楚了具体的函数应该怎样实现,那么把pass删除,补上需要的代码即可

    # 定义了4个函数
    def add_2_nums():
        print("接下来要进行加法操作...")
        num1 = input("请输入第1个数:")
        num2 = input("请输入第2个数:")
        print("%s+%s=%d" % (num1, num2, int(num1) + int(num2)))
    
    
    def min_2_nums():
        print("接下来要进行减法操作...")
        num1 = input("请输入第1个数:")
        num2 = input("请输入第2个数:")
        print("%s-%s=%d" % (num1, num2, int(num1) - int(num2)))
    
    
    def mult_2_nums():
        print("接下来要进行乘法操作...")
        num1 = input("请输入第1个数:")
        num2 = input("请输入第2个数:")
        print("%s*%s=%d" % (num1, num2, int(num1) * int(num2)))
    
    
    def div_2_nums():
        print("接下来要进行除法操作...")
        num1 = input("请输入第1个数:")
        num2 = input("请输入第2个数:")
        print("%s/%s=%d" % (num1, num2, int(num1) / int(num2)))
    
    
    # 分别调用函数
    add_2_nums()
    min_2_nums()
    mult_2_nums()
    div_2_nums()
    

      

    注意:

    • Python代码规范中提到,定了多个函数,那么函数与函数之间空2行

    6.定义一次执行N次

    一个函数可以进行多次调用,每次调用函数时,函数都会从头开始执行,当这个函数中的代码执行完毕后,意味着调用结束了

    def test():
        num = 100
        num += 1
        print("在test函数中num=%d" % num)
    
    
    test()
    test()
    

      

    运行结果:

    在test函数中num=101
    在test函数中num=101
    

      

    说明:

    • 第7行调用了第一次test函数,当test函数结束后num为101
    • 第8行调用了第二次test函数,依然会从test函数的开头开始执行,所以结果依然是101

    五、内置函数

    内置函数:Python自带的函数,尽情的用,对我们的开发有极大的帮助

    Python之所以越来越受到开发者的喜爱,原因之一就是:它丰富的内置函数,基本上需要的功能Python都有了

    常用的内置函数如下示例

    cmp

    >>> cmp([1, 2], [3, 4])
    -1
    >>> cmp([1, 2], [1, 1])
    1
    >>> cmp([1, 2], [1, 2, 3])
    -1
    >>> cmp({"a":1}, {"b":1})
    -1
    >>> cmp({"a":2}, {"a":1})
    1
    >>> cmp({"a":2}, {"a":2, "b":1})
    -1
    

      

    注意:cmp在比较字典数据时,先比较键,再比较值。

    len

    >>> len("hello abcdef")
    12
    >>> len([1, 2, 3, 4])
    4
    >>> len((3,4))
    2
    >>> len({"a":1, "b":2})
    2
    

      

    注意:len在操作字典数据时,返回的是键值对个数。

    max

    >>> max("hello abcdef")
    'o'
    >>> max([1,4,522,3,4])
    522
    >>> max({"a":1, "b":2})
    'b'
    >>> max({"a":10, "b":2})
    'b'
    >>> max({"c":10, "b":2})
    'c'
    

      

    del

    del有两种用法,一种是del加空格,另一种是del()

    >>> a = 1
    >>> a
    1
    >>> del a
    >>> a
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'a' is not defined
    >>> a = ['a', 'b']
    >>> del a[0]
    >>> a
    ['b']
    >>> del(a)
    >>> a
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'a' is not defined
    

      

    time

    开发中,经常需要打印一些调试的信息,此时就又必须要输出时间,这就需要一些时间函数

    import time  # 引入time模块
    
    currentTime = time.time()
    print("当前时间戳为:", currentTime)
    

      

    运行结果:

    当前时间戳为: 1598952056.126486
    

      

    random

    import random
    
    a = random.uniform(1, 5)
    print("a =", a)
    
    b = random.randint(10, 50)
    print("b =", b)
    
    c = random.randrange(0, 51, 2)
    print("c =", c)
    

      

    运行结果(每次结果都可能不同)

    a = 2.018423712655862
    b = 14
    c = 14
    

      

    内置函数有很多,在后面的课程中我们根据实际情况加以使用

    切记:用到哪些内置函数就查询哪些内置函数,不用背,但要会查询会应用即可

  • 相关阅读:
    sql中生成随机字符串的function
    postgresql中uuid的使用
    sql中循环的存储过程
    java发送http的get、post请求
    data:image/png;base64
    Matcher和Pattern总结
    OPENXML解析sp_xml_preparedocument获取的XML句柄
    SqlServer性能优化
    python的2D绘图库matplotlib
    sift&surf检测关键点及描述子
  • 原文地址:https://www.cnblogs.com/dong4716138/p/15691236.html
Copyright © 2020-2023  润新知