• python高级函数以及文件操作


    函数的定义和使用

    •    函数:程序中可以复用的代码块

    函数的定义和使用

    def 函数名名(参数1,参数2,...):
            函数体
            return 返回结果!
    变量名 = 函数名(值1,值2,....) #值和参数个数一一对应!
            
    • 函数1:实现求任意两个数的和
    • 函数2:实现求任意两个数的和,再结果基础上再加10
    • 函数3:实现求任意两个数的四则运算!并判断结果是否为偶数
    # 函数1
    def demo(a,b):
        print(f"结果为{a+b}")
    
    # 函数2
    def demo2(a,b):
        return a+b
    
    jieguo = demo2(3,4)
    print(jieguo+10)
    
    # 函数3
    def demo3(a,b,fuhao):
        result = 0
        if fuhao == "+":
            result=a+b
        elif fuhao == "-":
            result=a-b
        elif fuhao == "*":
            result=a*b
        if fuhao == "/":
            result=a/b
        return result
    
    demo3(10,2,"/")
    jieguo2 = demo3(10,2,"/")
    if jieguo2 % 2 ==0:
        print("偶数")
    else:
        print("奇数")

    函数特性


    1,参数默认值

    def demo3(a,b,fuhao="+"):
        pass
    demo3(3,4) #可传递两个变量! 符号有默认值

    2,可变参数*args接收任意元组

    def demo(*args):
        pass
    a =(1,2,3)
    demo(a)

    3,可变参数**kwargs接收任意字典

    def demo(**kwargs):
        pass
    
    dic1 ={"name":1,"passwd":2}
    demo(dic1)

    4,解包裹

    # 拆分元祖
    def demo(a,b,c):
        pass
    args= (1,2,3)
    demo(*args) # ==>自动把元祖拆分为 a,b,c 三个变量
    # 拆分字典
    def demo(a,b,c):
        pass
    kwargs= {'name1':'aa','name2':'bbb','name3':'ccc'}
    demo(**args)  # ==>自动把元祖拆分为 a,b,c 三个变量, 结果: aaa,bbb,ccc

    5,递归

    • 函数内部,自己调用自己
    • 主意!!! 一定要有出口

    求累加,阶乘

    def demo(n):
        if n<=1:
            return 1  # 函数遇到return,表示结束了
        return  n+ demo(n-1)
    
    #调用
    print(demo(100))  #结果5050

    面试题:使用递归读取某个目录下的所有文件!

          判断条件    是否为目录,不是目录就退出

    6,函数参数为另一个函数(相当于使用函数的结果)

    def fn1(a,b):
        return a+b
    def fn2(fn1):
        print(fn1())
    
    fn2(fn1(3,4))   # 相当于fn2("7")

    7,lambda函数

    匿名函数,就是没有名字的函数

         lambda 参数1,参数2....表达式

    # 定义两个数的和
    def fn1(a,b):
        return a+b
    
    # 简写
    fn2 = lambda a,b:a+b
    print(fn2(3,4))

    8,map函数(列表中的每个值都执行某个函数)

    fn1 = lambda x:x*2
    jieguo = map(fn1,[1,2,3])  # 会自动把1,2,3三个值都乘以2
    print(jieguo) #2,4,6

     9,filter函数(列表中每个元素的值都执行某个函数,只保留为true的)

    fn1 =lambda  x:x%2
    jieguo = filter(fn1,[1,2,3,4,5])
    print(jieguo)

     10 ,函数中变量作用域

    • 函数中的变量:局部变量,只能当函数使用
    • 函数外的变量:全局变量,当前py文件任意函数都可用

     

     11,装饰器

    • 内部函数自动执行外部函数!
    • 特点: 装饰器优先于函数先执行!
    • 作用:经常用于给某个函数实现功能扩展! 实现:不该原来代码,的情况下,添加额外功能!
    • 装饰器可以写多个

     

     扩展登录验证

    #扩展的验证功能
    def check_login(func):
        print('开始验证是否登陆.........')
        def inner(name):
            print('各种判断,从sessin中获取')
            if name=='admin':
                print('登陆成功,可以看购物车')
            else:
                print('请先登陆,跳转到的呢牢固')
            func(name)
        return inner
    '''扩展: 不修改原代码!扩展验证name是否登陆!'''
    @check_login
    def gouwueche(name):
        print(f'查看购物信息')
  • 相关阅读:
    JVM笔记-temp
    Spark笔记-treeReduce、reduce、reduceByKey
    Java笔记-快速失败and安全失败
    Netty笔记--ByteBuf释放
    Spark笔记--使用Maven编译Spark源码(windows)
    MySQL笔记--查询语句实践
    Kafka笔记--指定消息的partition规则
    Spark Executor Driver资源调度小结【转】
    Spark学习笔记--Graphx
    HBase笔记--自定义filter
  • 原文地址:https://www.cnblogs.com/yuzui/p/13957853.html
Copyright © 2020-2023  润新知