Python---函数参数---王伟

#### 定义函数
```python
#定义函数
def function():
    print("hello world")
#调用函数
function()
#输出结果
hello world
```
#### 函数参数
```python
#1.函数参数类型:实参、形参和无参数
#2.实参:函数调用时候参数,实参可以传递任意类型的对象
#3.形参:函数定义时的参数名,没有实际意义
def function(self):
    print("%s"%self)
function("hello world")
#"hello world"为实参,self为形参
#输出结果
hello world
```
#### 参数类型
##### 位置参数
```python
#1.位置参数:调用函数时根据函数定义的参数位置来传递参数
#2.调用函数时传入实际参数的数量和位置都必须和定义函数时保持一致
#3.实参和形参数量必须一致
result=0
def function(a,b):
    result = a + b
    print(result)
function(10,20)  
#输出结果
30
```
##### 关键字参数
```python
#1.不按照形参定义的顺序去传递,而直接根据参数名去传递参数
#2.关键字参数可以按照不同顺序排序
#3.实参和形参数量必须一致
result=0
def function(a,b,c):
    result = a + b + c
    print(result)
function(c=10,a=5,b=15)
#输出结果
30
```
##### 默认参数
```python
#1.为参数提供默认值,调用函数时可传可不传该默认参数的值,传入参数会代替默认值
#2.默认值参数必须放在没有默认值参数之后
def function(name,sex="boy"):
 print("名字是:%s,性别是:%s"%(name,sex))
function("zahng")#没有指定sex,会使用默认值boy
function("zhang","girl")#指定sex,使用指定的参数girl
#输出结果
名字是:zahng,性别是:boy
名字是:zhang,性别是:girl
```
##### 不定长参数(*args)
```python
#1.在定义函数时,可以在形参前边加上一个*,这样这个形参将会获取到所有的实参(位置参数)(args可以为其他str,通常使用*args)
#2.将所有的实参保存到一个元组中
#3.带*的形参只能有一个,可以和其他参数配合使用,只能接收位置参数,而不能接收关键字参数
#4.不定长参数(*args)不是必须写在最后,若果写在其他形参之前,不定长参数(*args)后的所有参数,必须关键字参数跟随在位置参数后面,以关键字参数的形式传递
#5.如果在形参的开头直接写一个*,则要求我们的所有的参数必须以关键字参数的形式传递
def function(a,b,*args):
 print(a,b,args)
function(2,3,4,5,6,7,8,9)
#输出结果
2 3 (4, 5, 6, 7, 8, 9)
def function(*args,a,b):
 print(a,b,args)
function(4,5,6,7,8,9,a=2,b=3)#a,b形参,必须要以关键字参数传递
#输出结果
2 3 (4, 5, 6, 7, 8, 9)
形参开头直接*(*不接受参数)
def function(*,a,b):
 print(a,b)
function(a=2,b=3)
#输出结果
2,3
```
##### 不定长参数(**kwargs)
```python
#1.在定义函数时,可以在形参前边加上2个**,这样这个形参将会获取到所有的关键字(args可以为其他str,通常使用*args)
#2.**形参可以接收关键字参数,它会将这些参数统一保存到一个字典中,字典的key就是参数的名字,字典的value就是参数的值
#3.**形参只能有一个,并且必须写在所有参数的最后
def function(a,b,**kwargs):
    print(a,b,kwargs)
function(a=1,b="qaq",c=4,d="qwer",e=5)
#输出结果
1 qaq {'c': 4, 'd': 'qwer', 'e': 5}
```
##### 参数组合
```python
#位置顺序:位置参数、默认参数、关键字参数、不定长参数
def function(a,b=10,*args,**kwargs):
    print(a,b,args,kwargs)
function(2,12,32,"aa",name="kimi",age=8)
```
 
posted @ 2019-12-10 10:47  zhouhaiwu  阅读(124)  评论(0编辑  收藏  举报