zoukankan      html  css  js  c++  java
  • Python 函数基础1 定义、分类与嵌套使用

    目录

    • 零、了解函数
    • 一、函数的组成
    • 二、函数的定义
    • 三、函数的使用
    • 四、函数的分类
    • 五、函数的嵌套使用

    零、了解函数

    1.什么是函数
        在程序中函数就是具备某一功能的工具
    2.为何用函数
        为了解决以下问题
            1.程序的组织结构不清晰,可读性差
            2.代码冗余
            3.扩展性差
    

    一、函数的组成

    函数是由函数名、函数体、返回值、参数四个部分组成:
        函数名:使用该函数的依据
        函数体:完成功能的代码块
        返回值:功能完成的反馈结果
        参数:完成功能需要的条件信息
    

    二、函数的定义

    def 函数名(参数1,参数2,...):
        '''注释'''
        函数体  # 具体逻辑代码
        return '返回值'
        
        注意:
            1.函数必须原则:先定义,后调用
            2.函数名存放的是函数地址    
    

    三、函数的使用

    def foo(money):
        print('农夫山泉:%s元'%money)
        print("第一个函数!")
        return '函数的返回值'
        
    def foo1():
        print("第二个函数!")
        return '函数的返回值'
    
    3.1 函数名:拿到函数的地址
        print(foo)  # <function foo at 0x0000020B57A1E2F0>
    
    3.2 函数名():拿到函数的地址,并执行函数中存放的代码块(函数体)
        foo1() # "第二个函数!"
    
    3.3 函数名(参数):执行函数并传入参数
        foo(2)
        >>>农夫山泉:2元
           第一个函数!
           
    3.4 函数名():执行完毕后,会得到函数的返回值,返回值就跟普通变量一样
        print(foo1()) # "第二个函数! 
     函数的返回值 " 
    
    
    def fn(num):
        print('c传入的num值:%s' %num)
        return '收到了'
    res = fn(10)
    
    # 控制台会打印:传入的num值:10
    # res的值为:"收到了"
    
    # 注:函数一定要先定义再调用
    

    四、函数的分类

    4.1 根据返回值划分

    # 空返回
        1.没有return 的函数
        2.空 return
        
    def fn1():
        print("fn1 run!!!  ",end='')
    res = fn1()
    print("没有return的关键字的返回值:%s"%res)
    
    def fn2():
        print("fn2 run!!!   ",end='')
        return
    #   return None
    #   约等于 不写
    res = fn2()
    print("空return关键字的返回值:%s"%res)
    
    # 有值返回
        3.return一个值
        4.return多个值
    
    # 一个值的返回
    def add_num(n1,n2):
        return n1+n2
    print(add_num(10,15))
    def computed(n1,n2):
        #  返回四则运算的结果
        r1 = n1 +n2
        r2 = n1 -n2
        r3 = n1 *n2
        r4 = n1 /n2
        return [r1,r2,r3,r4]
        
    a,b,c,d =computed(50,25)
    print(a,b,c,d)
    
    # 多个值的返回:本质就是返回装有多个值的元组 
    def computed_sup(n1, n2):
        #   返回四则运算的结果
        r1 = n1 + n2
        r2 = n1 - n2
        r3 = n1 * n2
        r4 = n1 // n2
        return (r1, r2, r3, r4)
    
    res = computed_sup(50,25)  # 装有所有的结果
    print(res)
    
    

    4.2 从参数列表进行分类

    # 无参函数:函数体运行不需要外界体用参数
    def print_msg():
        print("hello world!")
    print_msg()
    
    # 有参函数:函数体运行需要外界体用参数
    def school_msg(name):
        print("%s到此一游!" % name)
    name = input("名字:")
    school_msg(name)
    

    五、函数的嵌套调用

    5.1 函数嵌套调用定义

    在一个函数体中调用另一个函数
    
    def fn1 ():
            print("fn1 run")
            fn2()
        
        def fn2 ():
            print("fn2 run")
            fn3()
        
        def fn3 ():
            print("fn3 run")
    # fn1()
    # 注意执行流程:执行fn1,打印"fn1 run",再调用fn2,打印"fn2 run",
    # 再调用fn3,打印"fn3 run",再返回fn2,执行完返回fn1,最后结束程序
    
    # 注:
    1. 在解释过程中,不执行函数体,在函数被调用时,函数体才被执行
    2. 在fn1中调用fn2,所以在调用fn1的逻辑应该在fn2定义之后
    
    

    5.1 求两个数的最大值

    # 案例:用函数实现两个数的最大值
    
    def max_2(n1,n2):
        if n1 > n2:
            return n1
        return n2
    print(max_2(20,30))
    
    # 纯判断版:
    def max_3(n1,n2,n3):
        if n1 > n2 and n1 > n3:
             return n1
        if n2 > n2 and n2 > n3:
             return n2
        return n3
    
    # 调用函数优化版
    def max_3_2(n1,n2,n3):
        m2 = max_2(n1,n2)
        return max_2(m2,n2)
    print(max_3_2(10,15,12))
    
    案例: 指定文件名的复制
    # 旧版,无函数
    def copy_img(target_img):
        with open('001.jpg','rb') as r,open('target_img','rb') as w:
            for line in r :
                w.write(line)
    
    # 使用函数,改进版
    def copy_file(source,target):
        """
        :param source: 被复制的文件
        :param target: 复制得到的文件
        :return:
        """
        with open(source,'rb') as r,open(target,'wb') as w:
            for line in r:
                w.write(line)
    
    copy_file('1.txt','2.txt')
    
  • 相关阅读:
    分布式文件系统--->fastDFS
    varnish4.0缓存代理配置
    varnish4.0缓存代理配置
    varnish4.0缓存代理配置
    SDN 是什么
    SDN 是什么
    SDN 是什么
    Solidworks如何保存为网页可以浏览的3D格式
    github 的 配置SSH
    当一个实例被创建,__init__()就会被自动调用
  • 原文地址:https://www.cnblogs.com/xt12321/p/10616089.html
Copyright © 2011-2022 走看看