python-day3 函数

函数分为定义阶段和调用阶段

def xxx(参数):

  '''注释'''

  表达式

xxx()    -->调用

常用的print()  就是python内部定义好的函数

 

#########函数返回值###########

return

在函数中定义 return, 在调用的时候可以把返回值传递给一个变量,和print 不同

print 在函数调用的时候就直接打印了,而传递给变量之后在打印就是None

 

 

 

==========参数分类=============

1:位置参数

def foo(x,y,z):

  print (x,y,z)

foo(1,2,3)

 

2:关键字参数

def foo(x,y,z):

  print (x,y,z)

foo(y=2,x=1,z=3)  -->在调用时体现

# 1:关键字实参必须在位置实参后面
# 2: 不能重复对一个形参数传值
# foo(1,z=3,y=2) #正确
# foo(x=1,2,z=3) #错误

 

3:默认参数

def foo(x,y,z=3):

  print (x,y,z)

  foo(1,y=2)

或者 foo(1,2)


#默认参数必须跟在非默认参数后

#默认参数的值通常定义成不可变类型

#默认参数在定义阶段就已经赋值了,而且只在定义阶段赋值一次

# def register(sex='male',name,age): #在定义阶段就会报错

 

4:可变长参数  *args(一个星)  会把溢出的按位置定义的实参都接收,以元组的形式赋值给args

**kwargs(俩个星) **会把溢出的按关键字定义的实参都接收,以字典的形式赋值给kwargs

def foo(x,y,*suibian):    -->*后面随便写,最好写为args

  print (x,y)

  print (suibian)

foo(1,2,3,4,5,6,7,1)

变长参数会把里面的内容放到 一个元祖中

上面的调用结果 和这样写相同:

foo(1,2*[3,4,5,6,7,1])  -->在调用的时候使用* 会把后面的内容分别放入suibian 中

可以使用列表、集合、元祖、字典, 但是字典只会将key 提取出来

foo(1,2,*{'a':3,'b':4,'c':5})
如果想要 字典值:如下
foo(1,2,*{'a':3,'b':4,'c':5}.values())


如果想要k,v
foo(1,2,*{'a':3,'b':4,'c':5}.items())
处理结果:

1 2
(('c', 5), ('b', 4), ('a', 3))

 

##########**kwargs

def foo(x,y,**kwargs):
# (x,y)print )
print (x,y)
print (kwargs)
foo(1,2,a=3,b=4,c=5)
在传递的时候 **kwargs 的需要 以k=v 的形式传递 因为 **kwargs 是以字典形式显示

 

5:命名关键字参数(python3新加)

 

posted @ 2017-05-16 15:12  昂达达  阅读(209)  评论(0编辑  收藏  举报