ql的python学习之路-day7

函数与函数式编程

一.编程模式分为三种:

1.面向对象编程:类----->关键字class

2.面向过程编程:过程----->关键字def,没有return

3.函数式编程:函数----->关键字def,有return返回值

面向过程编程是没有返回值的函数式编程,在python中过程可以看做函数,只是python默认过程没有返回值。

面向过程编程就是把一段段零散的代码通过def定义成一块块代码,需要调用的时候就拿出来使用。

 1 #!/user/bin/env python
 2 #-*-coding:utf-8 -*-
 3 #Author: qinjiaxi
 4 #函数
 5 def func1():
 6     """testing1"""
 7     print('in the func1')
 8     return 0
 9 #过程
10 def func2():
11     """testing2"""
12     print('in the func2')
13 x = func1()#调用函数
14 y = func2()#调用过程
15 print('func1 return: {}'.format(x))#函数有返回值返回定义函数时的0
16 print('func2 return: {}'.format(y))#过程没有返回值返回None

二.为什么要使用函数

1.避免代码重复(避免代码的重复,把代码封装到函数中,调用时只调用代码)

2.保持一致性(调用函数时)

3.可扩展容易扩展(修改函数,其他调用函数的地方都可以跟着变动)

 三.函数的返回值

1.返回值=0,返回None

2.返回值=1,返回object(本身)

3.返回值>1,返回tuple(元组)

扫描二维码关注公众号,回复: 2766523 查看本文章

四.函数为什么要有返回值

返回整个函数的运行结果,根据返回结果进行后面的操作

五.函数的参数

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 # Author:qinjiaxi
 4 
 5 #位置参数和关键字参数
 6 def test(x,y):
 7     print(x,y)
 8 test(1,2)#1,2是位置参数,按照位置来传递函数参数,与形参一一对应
 9 test(y = 1, x = 2)#此时y和x是关键字参数,将形参赋值与形参顺序无关
10 "其中x,y是形参,1、2是实参"
11 "位置参数和关键字参数共同使用的时候:必须位置参数放在前面,否则报错"
12 
13 #默认参数
14 def test1(x, y =2):
15     print(x,y)
16 test1(1)
17 "默认参数:在定义函数的时候给形参赋值" \
18 "默认参数的特点:调用函数的时候,默认参数非必须传递,如果传递就修改之前的赋值" \
19 "默认参数的用途:1.提前固定值,默认安装值 2.连接数据库时使用默认参数可以固定端口号" \
20 
21 #参数组
22 #传递多个参数
23 def test2(*args):
24     print(args)
25 test2(1,2,3,4,5)#接受多个实参,将参数传进去得到一个元组
26 test2(*[1,2,3,4,5])#    args = tuple([1,2,3,4,5])
27 
28 def test3(x, *args):
29     print(x)
30     print(args)
31 test3(1,2,3,4,5)#将1传给1,其他的以元组的形式传递给args
32 
33 #传递多个字典参数
34 def test4(**kwargs):
35     print(kwargs)
36 test4(name = 'qinlang', age = 3)
37 test4(**{'name': 'qinlang', 'age': '3'})
38 "功能:把N个关键字参数,转换为字典的方式"
39 
40 def test5(name,**kwargs):
41     print(name)
42     print(kwargs)
43 test5('秦朗', x = 111 ,y =222, age = 8)#先接受位置参数,然后把关键字参数变成字典
44 
45 def test6(name, age = 3, **kwargs):
46     print(name)
47     print(age)
48     print(kwargs)
49 test6('秦朗',hobby = 'play',age = 3.5)#先接受位置参数,然后接受默认参数,最后将关键字参数变成字典
50 
51 "总结:*args接受的是位置参数,如果调用函数的时候不传递则返回一个空元组"
52 "      *kwargs接受的是关键字参数,如果调用函数的时候不传递则返回一个空字典"
53 "      默认参数在调用的时候可以写可以不写,如果写的话有两种方式一是在固定位置写值、二是以关键字参数传递"
54 "      最后强调,位置参数一定得放在关键字参数的后面"

 

猜你喜欢

转载自www.cnblogs.com/qinlangsky/p/9459054.html