• python—day9 函数的定义、操作使用方法、函数的分类、函数的嵌套调用


    一、函数的定义

    函数的四个组成部分:

                                                      函数名、

                                                      函数体、

                                                      函数返回值、

                                                      函数参数

    1、概念:重复利用的工具,可以完成特定功能的代码块,函数是存放代码块的容器

    2、定义:

    def:声明函数的关键词

    函数名fn:使用该函数的依据

    函数体:完成功能的代码块

    返回值return:功能完成的反馈结果

    参数():完成功能需要的条件信息(参数个数可以为0~n个,但()一定不能丢)

    3、定义函数的方法:

    def 函数名(参数们):

           函数体

          return‘返回值’

    fn直接打印,只能看到函数存放代码的地址
    
    age1:def fn()
    
         print('函数的一行代码')
         print('函数的二行代码')
         return'函数的返回值'
         print(fn,id(fn))>>>>打印fn的全部行数体的地址
    age2:def fn (money):
           print('你付了%元钱'%(money))
    使用函数:函数名()
    fn(10)
    print("把水喝了")
    
    函数的返回值也称之为函数值,就是函数执行结束后的结果
    可以用变量接受|可以直接打印|可以直接使用
    
    msg=fn(10)
    print(msg)>>>.输出age1全部的函数体
    
    得出结论:函数执行的本质:执行函数体,得到函数返回值

    二、函数的操作、使用方法

    1、先定义后使用


    计算
    空函数:项目值出,知道项目有哪些功能,但还没有明确功能体,可以用pass进行函数体填充
    def computed():
    pass
    非空函数:用函数体
    def add_num(n1,n2):
    '''

    :param n1:第一个数
    :param n2: 第二个数
    :return: 两个数之和
    '''
    return n1+n2

    computed()

    res=add_num(10,20)
    print(res)

    a-50
    b=100
    print(add_num(a,b))
    2、如何使用函数
    函数名:拿到行数的地址
    函数名():拿到函数的地址,并执行函数中存放的代码块(函数体)*******
    函数名(参数):执行函数并传入参数


    函数名()执行完毕后,会得到函数的返回值,返回值就跟普通变量一样,可以直接打印、使用、运算

    eg:def  fn(num):
              print("传入的num值:%s")
    

      

     

    三、函数的分类

    1、根据参数列表划分

    无参函数:函数体不需要外界提供参数

    def start():
        print('系统启动')
    start()
    

      

    有参函数:函数体需要外界提供参数

    def login(usr, pwd):
        if usr == 'owen' and pwd == '123':
            print('登录通过')
     else:
            print('登录失败')
            
     login('owen', '123')

    2、从返回值进行划分

    空返回

    1、没有return的函数

    2、空return

    def fn1():
        print('fn1 run !!!!')
        res=fn1()
        print('没有return关键字的返回值:%s'%res) # >>>>输出Noen
    
    def fn2():
        print('fn2 run!!!1')
        return
        return  None
    res=fn2()
    print('空return关键字的返回值:%s'%res) # >>>>输出Noen

    值返回

    1、return一个值

    2、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
    
    a, b, c, d = computed_sup(50, 25)
    print(a, b, c, d)
    
    res = computed_sup(50, 25)  # 得到的是装有所有结果的元组
    print(res)

    3、无return函数与空return函数的区别

          

    无return函数与空return函数的区别
    空return:可以根据具体情况主动退出函数(像break借束循环一样)
    def fn3(msg):
        print('fn3 第一行逻辑')
        # msg 信息不正常:''|Noen
        if msg=='' or msg is None:
            return # 结束函数
        print('msg信息正常:%s'% msg)
    msg=input('msg:')
    fn3(msg)

    四、函数的嵌套调用

    1、定义:在一个函数体重调用另一个函数

    2、方法:在解释过程中,不执行函数体,在函数被调用时函数体才被执行

    ef fn1 ():
        print('fn1 run')
        fn2()
    def fn2():
        print('fn2 run')
        fn3()
    def fn3():
        print('fn3 run')
        fn1()
    注:在fn1中调用了fn2,所以fn1的逻辑应该在fn2定义之后


    案例:用函数实现获取两个数的最大值
    
    
    def max_2(n1,n2):
        if n1>n2:
            return n1
        return  n2
    print(max_2(10,20))
    
    
    用函数实现获取三个数的最大值
    
    
    def max_3(n1,n2,n3):
        m2=max_2(n1,n2)
        return max_2(m2,n3)
    print(max_3(10,20,30))
    
    
    用函数实现获取四个数的最大值
    
    
    def max_4(n1,n2,n3,n4):
        m2 = max_2(n1, n2)
        return max_3(m2, n3,n4)
    print(max_4(10,20,30,40))


    五、补充指定文件名的文件复制和函数实现登录注册

     1、指定文件们的文件复制

    with open('001.jpg','rb') as r,open('100.jpg','wb') as w:
        for line in r:
            w.write(line)
    
    with open('001.jpg','rb') as r,open('200.jpg','wb')as w:
        for line in r:
            w.write(line)
    def copy_img(target_img):
        with open('001.jpg','rb')as r ,open('target_img','wb')as w:
            copy_img('888.jip')
            copy_img('999.jpg')
    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('cmd.txt','aaa.txt')
    copy_file('temp.txt','bbb.txt')

    2、函数实现登录注册

    
    
    '''
    1.可以循环登录注册,输入1代表选择登录功能,输入2代表注册功能,输入0代表退出,其他输入代表输入有误,重输
    2.用户的账号密码信息存放在usr.txt文件中,保证用户注册成功后,重启系统,用户信息仍然保存
    3.登录在账号验证通过才输入密码验证登录,账号验证三次失败自动进入注册功能,登录三次验证失败自动退出系统
    4.第一次注册,文件写入 账号:密码 信息,再次注册追加写入 |账号:密码 信息
    
    '''
    
    # 获取文件在用户信息
    def get_usr_map():
        pass
    
    # 注册
    def  register():
        print('注册页面')
        pass
    
    # 登录
    def login():
        print('登录页面')
        pass
    
    #  启动系统
    def start():
        print("系统启动!")
        while True:
            tag=input("""请输入操作指令
            0 退出
            1 登录
            2 注册 
            
      》》》:      """)
            if tag.isdigit():
                tag=int(tag)
            if tag==0:
                break
            elif tag==1:
                login()
            elif tag==2:
                register()
            else:
                print('输入有误,请重新输入')
    
    # 启动系统
    start()
  • 相关阅读:
    Spring boot 启动图片
    Spring Cloud 从入门到入门
    理解错误的 Arrays.asList()
    git github 对代码的管理
    【POJ 2154】Color
    CodeForces
    CodeForces
    CodeForces
    CodeForces
    [数据结构]Hash Table(哈希表)
  • 原文地址:https://www.cnblogs.com/zhouqinmei/p/10616197.html
Copyright © 2020-2023  润新知