zoukankan      html  css  js  c++  java
  • 函数之实参的3种形式

    def foo(x,y):
    	print(x)
    	print(y)

    在实参的角度:

    第一种,按照位置传值

    fool(1,2)  
    fool(2,1) #位置不一样,结果也不一样

    第二种,按关键字传值

    foo(x=1,y=2)
    foo(y=2,x=1) #明确指明,x的位置

    第三种,混着用

    foo(1,y=2)  
    #安位置传值,必须在按关键字传值的前面,否则会报错

     问题二:对于一个形参,不能重复赋值。否则报错,例如

    foo(1,x=1,y=2)
    

      

    从形参的角度来分析

    #位置参数:1, 必须传值。指的就是形参

                     2, 一一对应。多一个少一个都不行。

                    

    def foo(x,y):
         print(x)
         print(y)
    
    #从左到右,一一对应,一个个位置来
    

    默认参数: 定义阶段,就传值,默认一个值

    def foo(x,y=1)
         print(x)
         print(y)
    foo(1)
    foo(1,2)
    foo(y=2,x=2) 

    什么时候用默认参数?必须要注意的问题:定义时赋值,默认参数必须放到位置参数的后面

          定义阶段,只检测语法,只要语法没有任何错误,就不会报错。

          调用阶段,会报错。

    1,调用时无需传值,比较方便

    2,把变化比较小的参数,定义为默认参数

    3,默认参数,在函数定义阶段,就已经确定下来

    x='male'
    def register(sex=x):
         print(sex)
    
    x=None
    register()
    
    
    #还是定义阶段的male,推荐
    

      

    x=[]
    def register(name,name_list=x):
         name_list.append(name)
    
    register('333')
    register('111')
    register('222')
    
    print(x)
    
    #这种模式不推荐
    

      

     什么时候用,未知参数?

    1,经常发生变化的,用未知参数

      

  • 相关阅读:
    数据结构与算法之美-二分查找(下)
    数据结构与算法之美-二分查找(上)
    数据结构与算法之美-排序优化
    数据结构与算法之美-线性排序
    DRF框架之路由Routers
    DRF框架之视图集(ModelViewSet)简介
    DRF框架之视图子类简介
    DRF框架之视图的扩展类简介
    DRF框架之视图基类APIView和GenericAPIView简介
    DRF框架之ModelSerializer序列化器
  • 原文地址:https://www.cnblogs.com/catherine007/p/8193429.html
Copyright © 2011-2022 走看看