函数基础

一、函数的定义

1.1函数的概念

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print(),len()等。但你也可以自己创建函数,这被叫做用户自定义函数。

def 函数名 ():

  pass 函数体

1.2 函数的定义和调用

#函数的定义阶段
def my_max(x,y):
    return x,y


#函数调用阶段
res=my_max(10,25)
print(res)

二、函数的返回值

2.1 return 不写return的情况下,会默认返回一个None,

 1 #函数定义
 2 def mylen():
 3     """计算s1的长度"""
 4     s1 = "hello world"
 5     length = 0
 6     for i in s1:
 7         length = length+1
 8     return length
 9 
10 #函数调用
11 str_len = mylen()
12 print('str_len : %s'%str_len)
View Code

2.1 返回多个值、任意数据类型

 1 def ret_demo1():
 2     '''返回多个值''' 
 3     return 1,2,3,4
 4 
 5 
 6 def ret_demo2():
 7     '''返回多个任意类型的值'''
 8     return 1,['a','b'],3,4
 9 
10 ret1 = ret_demo1()
11 print(ret1)
12 ret2 = ret_demo2()
13 print(ret2)
View Code

2.3 返回的多个值会被组织成元组被返回,也可以用多个值来接收

 1 def ret_demo2():
 2     return 1,['a','b'],3,4
 3 
 4 #返回多个值,用一个变量接收
 5 ret2 = ret_demo2()
 6 print(ret2)
 7 
 8 #返回多个值,用多个变量接收
 9 a,b,c,d = ret_demo2()
10 print(a,b,c,d)
11 
12 #用多个值接收返回值:返回几个值,就用几个变量接收
13 a,b,c,d = ret_demo2()
14 print(a,b,c,d)
15 
16 多个返回值的接收
View Code

三、函数参数

#函数的参数分类
#形参:在定义阶段括号内指定的参数,相当于变量名

#实参:在调用阶段括号传入的值称之为实参,相当于值

#在调用阶段,实参的值绑定形参,在调用结束后解除绑定

3.1位置参数

3.1.1按照从左到右的顺序依次定义的参数

3.1.2位置形参:必须被传值,多一个少一个都不行

3.1.3位置实参:与形参一一对应传值

1 def num1(x,y):
2     print(x,y)
3 
4 
5 num1(1,4)
View Code

3.2 关键字参数

3.2.1 在函数调用时,按照key=value的形式定义是的实参

 

3.2.2 指名道姓地给形参传递,不在依赖与位置

1 ef foo(name,age,sex):
2     print(name,age,sex)
3 # foo("tom",22,'male')
4 foo(sex="male",name="robin",age=12)
View Code
#注意:
#1关键字实参必须在位置实参的后面
#不能未同一个参数赋多个值


3.2.3默认参数,在函数定义的阶段,就已经为形参赋值
3.2.3.1 定义阶段已经有了值意味着调用阶段可以不用传值
3.2.3.2 位置参数通常用于经常变化的参数,默认参数用于通常不变的参数
1 def info(x,y=2):
2     print(x,y)
3 
4 info(1)
View Code

注意:

1)默认参数的值只在定义时被赋值一次
2)默认参数的值通常应该是不可变类型

3.2.4
def trans_para(*args,**kwargs):
    print(args,type(args))
    print(kwargs,type(kwargs))
trans_para("jinxin",12,[1,2,3,4],[3,4,],(1,4,7),{"a":"123","c":456},country="china")




动态参数,也叫不定长传参,就是你需要传给函数的参数很多,不定个数,那这种情况下,你就用*args,**kwargs接收,args是元祖形式,接收除去键值对以外的所有参数,kwargs接收的只是键值对的参数,并保存在字典中。

 



 

posted @ 2018-04-19 16:08  鱼丸粗面没鱼丸  阅读(195)  评论(0编辑  收藏  举报