day3-编程方法、函数、函数参数及调用

一、编程方法

1. 面向对象--类--class
2. 面向过程--过程--def(没有返回值的参数)
3 .函数式编程--函数--def

二、函数

函数三大优点:
1. 代码重用
2. 保持一致性
3. 可扩展性

三、函数参数及调用

1. return

两个作用:

a. 需要用一个变量来接受程序结束后返回的结果

b. 作为结束符终止程序运行

如果函数:

没有定义,返回值数=0,返回:None

只定义了1个返回值,返回值=1 ,返回:定义的那个值,或者说定义的那个object

定义了2个以上,返回值 > 1,返回:1个元组(tuple)

2. 形参、实参、位置参数、关键字参数、默认参数

形参:指的是形式参数,是虚拟的,不占用内存空间,形参单元只有被调用的时才分配内存单元

实参:指的是实际参数,是一个变量,占用内存空间,数据传递单向,实参传给形参,形参不能传给实参

位置参数:实际参数和形式参数一一对应

关键字参数:不需要一一对应,指定形参调用实参

默认参数:调用函数的时候,默认参数非必须传递

 1 # x,y是形参
 2 def test(x,y):
 3     print(x)
 4     print(y)
 5 
 6 # 1,2是实参
 7 test(1,2)
 8 
 9 test(1,2)      #位置参数,与形参一一对应
10 test(3, y=2)   #既有关键字参数又有位置参数时,先按照位置参数来,关键参数不能写在位置参数前面
11 test(y=2,x=1)  #关键参数,与形参顺序无关
12 
13 # 默认参数
14 def test(x,y=2):
15     print(x)
16     print(y)
17     
18 test(1,3)

3. 参数组

 1 # *args:非固定位置参数,接收N个位置参数,转换成元祖的形式
 2 def test(*args):
 3     print(args)
 4     
 5 test(1,2,3,4,5) #可接收多个实参,把多个实参放到元祖里
 6 test(*[1,2,3,4,5]) # args=tuple([1,2,3,4,5]),与上面一致
 7 print "-"*30
 8 
 9 # **kwargs: 非固定关键字参数,接收N个关键字参数,转换成字典的形式
10 def test2(**kwargs):
11     print(kwargs)
12 
13 test2(name='a',age=8) #接收多个关键字参数 
14 test2(**{'name':'a','age':8}) #接收字典
15 print "-"*30
16 
17 # 位置参数+非固定关键字参数
18 def test3(name, **kwargs):
19     print(name)
20     print(kwargs)
21     
22 test3('a') #只填位置参数
23 test3('a',age=18,sex='m') #组合,先传位置参数
24 print "-"*30
25 
26 # 位置参数+默认参数+非固定关键字参数
27 def test4(name, age=18, **kwargs):
28     print(name)
29     print(age)
30     print(kwargs)
31     
32 test4('a',sex='m',age=3) #组合,先传位置参数,后传非固定参数
33 test4('a',4,sex='m') #组合,先传位置参数,后传非固定参数
34 
35 >>> 
36 (1, 2, 3, 4, 5)
37 (1, 2, 3, 4, 5)
38 ------------------------------
39 {'age': 8, 'name': 'a'}
40 {'age': 8, 'name': 'a'}
41 ------------------------------
42 a
43 {}
44 a
45 {'age': 18, 'sex': 'm'}
46 ------------------------------
47 a
48 3
49 {'sex': 'm'}
50 a
51 4
52 {'sex': 'm'}

 

posted @ 2017-06-22 10:25  不知所以  阅读(152)  评论(0)    收藏  举报