Python基础知识(day9)

day9

今日内容

  • 参数
  • 作用域
  • 函数嵌套

内容详细

  1. 参数

    • 任意个数

    • 任意类型

      # 参数科任意个数,任意类型
      def func(a1, a2, a3):
          print(a1, a2, a3)
      # 调用传参必须一一对应
      func(1, 'llk', True )
      
  2. 位置传参(调用函数并传入参数)

    传参与位置一一对应

  3. 关键字传参

    def func(a1, a2, a3):
        print(a1, a2, a3)
    # 关键字传参可以改变位置
    func(a1 = 2, a3 = 99, a2 = True)
    
    # 关键字传参可以和位置传参混合使用
    def func(a1,a2,a3):
        print(a1,a2,a3)
    func(1,'llk',a3 = 9) # 位置参数必须在前
    
  4. 默认参数[定义]

    # func接收两个参数,调用函数传值时,已定义的值可传或不传
    def func(a1,a2=99):
        pass
    func(1,2)
    func(1)
    
  5. 万能参数(打散)

    • *args

      def func(*a1): # a1潜规则为args
          pass
      func(1,2) # a1 = (1,2)
      func((1,2,3)) # a1 = ((1,2,3),)
      func(*(1,2,3)) # a1 = (1,2,3)
      
      def funcb(a1,*args):
          pass
      funcb(1,2,3,4,5) # print -> 1(2,3,4,5)
      
      
      • 只能用位置传参

      • 可以接收任意个数的参数,并将参数转换成元组

      • 调用函数无*

        def func(*args):
            print(args) 
        func(1,2,3,4)
        
      • 调用函数有*

        def func(*args):
            print(args) 
        func(*(1,2,3,4))
        
    • **kwargs

      • 只能关键字传参

      • 可以接收任意个数的关键字参数,并将参数转换为字典

      • 调用函数无**

        def func(**kwargs):
            print(kwargs) 
        func(k1=1,k2='llk')
        
        
      • 调用函数有**

        def func(**kwargs):
            print(kwargs)  
        func(**{'k1':'v1','k2':'v2'}) # kwargs={'k1':'v1','k2':'v2'}
        
    • 综合应用

      def func(*args,**kwargs):
          print(args,kwargs)
      

作用域

python中

  • py文件:全局作用域

  • 函数:局部作用域

    a = 1
    def s1():
        x1 = 666
        print(x1)
        print(a)
        print(b)
    b = 2
    print(a)
    s1()
    
  • 总结

    • 一个函数是一个作用域

    • 作用域查找数据规则:优先在本身作用域找数据,再到父级找,逐层往上,直到全局,否则报错

    • 子作用域只能找到父级的值,而不能对他进行重新赋值

    • 全局变量以后必须全部是大写

原文地址:https://www.cnblogs.com/lilangkui/p/12547411.html