函数之实参的3种形式

Posted 老王的农场

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数之实参的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,经常发生变化的,用未知参数

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 

以上是关于函数之实参的3种形式的主要内容,如果未能解决你的问题,请参考以下文章

python中函数定义之实参形参

当需要一个形式参数直接改变对应实参的值时,该形式参数应说明为啥参数?

C语言形参与实参的概念及swap函数

函数的参数

形式参数啥时候可以改变实参?给个例子。

函数中传值跟传参的区别?