AI学习 Day05 函数(下)

本文章最初发布在 XJHui’s Blog,未经允许,任何人禁止转载!

注意:最新修改版本已发布在 这里,点击前往查看!

变量

局部变量

  1. 简单使用:

    def setName():
        name = 'peter' #局部变量
        print(name)
    
    setName() #调用函数
    
  2. 作用:临时保存数据,需要在函数中定义来进行存储。

  3. 特点:

    • 在函数内部定义的变量,作用域仅局限在函数内部

      def setName():
          name = 'peter' #局部变量
      
      print(name) #打印name
      

      运行结果:

    • 不同的函数可以定义相同名称的局部变量,不会产生影响

      def setName1():
          name = 'peter'
          print(name)
      
      def setName2():
          name = 'Bob'
          print(name)
      
      setName1()
      setName2()
      

      运行结果:

全局变量

  1. 使用:

    age = 10 #全局变量
    
    def setName1():
        print(age)
    
    def setName2():
        print(age)
    
    setName1()
    setName2()
    

    运行结果:

  2. 区别局部变量:作用域的范围不同,全局变量在整个文件当中均可使用

  3. 易错:

    • 冲突时:局部变量优先级高于全局变量

      age = 10
      
      def setName1():
          age = 9
          print(age)
      
      def setName2():
          print(age)
      
      setName1()
      setName2()
      

      运行结果:

    • 函数中修改全局变量:

      age = 10
      
      def setAge():
          age = 5 #错误做法,这样只是定义了一个局部变量
      
      setAge()
      print(age)
      

      运行结果:

      age = 10 
      
      def setAge():
          global age #一定要先定义后赋值,具体原因不知
          age = 5
      
      setAge()
      print(age)
      

      运行结果:

      注意:

      • 若写成 global age = 5 是错误的,一定要先定义后赋值,具体原因不知
      • 上面的代码把最开始的age=10去掉也能成功运行

引用传值

补充

  1. 不可变数据:整型、字符串、元组
  2. 可变数据:列表、字典

传不可变值

age = 5 

def fonc(age): #传不可变数据类型的值
    age = 4

fonc(age)
print(age)

运行结果:

传可变值

list = []

def fonc(list):
    list.append(1)

fonc(list)
print(list)

运行结果:

匿名函数

基础

  1. 语法:lambda 参数1,参数2:表达式
  2. 特点:
    • 与标准函数相比,使用起来更加简洁
    • 自带return,返回的就是表达式的结果
  3. 缺点:
    • 复杂逻辑无法实现

使用

  1. 求和运算

    匿名函数:

    Sum = lambda x, y: x + y
    print(Sum(1, 2))
    

    标准函数:

    def Sum(x, y):
        return x + y
    
    print(Sum(1, 2))
    

    运行结果:

    注意:上面代码可以更简洁为 print((lambda x, y: x + y)(1, 2))

  2. 简单判断:

    补充: print('左边大' if 3 > 2 else '右边大')

    运行结果:

    Judge = lambda x, y: '左边大' if x > y else '右边大'
    print(Judge(1, 2))
    

    运行结果:

    同样可以简写为:print((lambda x, y: '左边大' if x > y else '右边大')(1, 2))

递归函数

  1. 特点:

    • 有递归结束判断
    • 自己调用自己
  2. 使用:

    • 普通求阶乘:

      def diGui(x):
          res = 1
          for i in range(1, x + 1):
              res *= i
          return res
      
      print(diGui(5))
      

      运行结果:

    • 递归求阶乘:

      def diGui(x):
          if x == 1:
              return 1
          else:
              return x * diGui(x - 1)
      
      print(diGui(5))
      

      运行结果:

    • 递归输出给定目录子文件名称:

      def findFile(file_path):  # 输出给定路径下所有文件名称
          lists = os.listdir(file_path)  # 将所有文件(夹)名称存入列表
          for item in lists:
              full_path = os.path.join(file_path, item)  # 获取完整路径名称
              if os.path.isdir(full_path):  # 判断
                  findFile(full_path)
              else:
                  print(item)
          else:
              return
      
      findFile('D:\\code')
      

      运行结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值