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'查看购物信息')
原文地址:https://www.cnblogs.com/yuzui/p/13957853.html