函数与函数式编程

一.编程模式分为三种:

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

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

3.函数式编程:函数----->关键字def,有return返回值(注:函数式编程与我们学习的函数完全不是一回事)

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

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

函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此任意一个函数,只要输入是确定的,输出就是确定的

python对函数式编程提供部分支持,由于python允许使用变量,所以python不是纯粹的函数式编程语言。

 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(元组)

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

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

五.函数的参数

 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'})#kwargs = dict({'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 "      最后强调,位置参数一定得放在关键字参数的后面"

转载于:https://www.cnblogs.com/qinlangsky/p/9459054.html

ql的python学习之路-day7相关推荐

  1. ql的python学习之路-day10

    前言:本节主要讲解迭代器和生成器 迭代器&生成器 一.生成器(generator) 循环占用大部分的容量内存,如果只需要循环前面的几个结果那怎么样做呢,在python中有一种一边循环一边计算的 ...

  2. python学习之路-day7

    本节内容: 面向对象高级语法部分 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 面向对象高级语法部分 静态方法                             ...

  3. ql的python学习之路-day9

    前言:本节主要学习装饰器 一.装饰器 定义:本质上是个函数,用来装饰其他函数:(就是为其他函数添加附加功能) 原则:1.不能修改被装饰的函数的源代码 2.不能修改被装饰的函数的调用方式 以上两点可以总 ...

  4. ql的python学习之路-day3

    字典操作 特性: 1.无序的 2.key是唯一的 #!/usr/bin/env python# -*- coding utf-8 -*-# Author:qinjiaxiinfo = {'name1' ...

  5. python之路 mysql 博客园_教为学:Python学习之路(二):MySQLdb的几种安装方式,以及用Python测试连接MySql...

    教为学:Python学习之路(二):MySQLdb的几种安装方式,以及用Python测试连接MySql Easy_install安装MySQLdb 很简单,以至于我不晓得该怎么说.一句话. sodu ...

  6. Python学习之路—2018/7/14

    Python学习之路-2018/7/12 3.功能开发 3.3 设计博客首页 博客首页中最重要的就是中间的文章区域,所以我首先把文章区域设计出来,一开始并没有数据,如果用orm添加或者直接在数据库添加 ...

  7. Python学习之路—2018/6/20

    Python学习之路-2018/6/20 1.模板语法之变量 views.py def index(request):import datetimes="gyq"l=[1,2,3] ...

  8. Python学习之路9☞面向对象的程序设计

    Python学习之路9☞面向对象的程序设计 一 面向对象的程序设计的由来 见概述:http://www.cnblogs.com/linhaifeng/articles/6428835.html 二 什 ...

  9. python 学习之路开始了

    python 学习之路开始了.....记录点点滴滴.... 转载于:https://www.cnblogs.com/chobit/p/6163287.html

  10. Python学习之路5☞文件处理

    Python学习之路5☞文件处理 一.文件处理流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 1 正趣果上果 2 Interesting fruit fruit 3 4 ...

最新文章

  1. 暑期集训2:ACM基础算法 例2:POJ-2456
  2. 如何给女朋友解释并发与并行的区别?
  3. nginx.pid failed (2: The system cannot find the file specified
  4. 五大微信小程序开发IDE深度评测
  5. yelee主题修改博客左侧文章目录的按钮字体
  6. ACL2020 奇葩论文标题大赏
  7. Java 8 为什么要使用Lambda表达式
  8. 中国光伏产业将面临何种形势?
  9. Java中使用POI导出excel文件
  10. cocosbuilder源码编译
  11. GB/T19001—2008质量管理体系要求、标准、贯标(贯彻标准)
  12. Android 实现Home按键功能的两种方式
  13. 创新工场王嘉平开讲:low-level的计算机视觉
  14. android gson工具包,Android Study 之 彻底解决 Gson解析 异常
  15. PHP 操作redis 详细讲解
  16. 处理:“ORA-00257: archiver error. Connect internal only, until freed”的错误问题
  17. 发布一个JINI服务
  18. RISC-V为中国MCU企业打开一个新窗口!
  19. 【机器学习】经典的机器学习200道面试题(附参考答案)
  20. Algorithm:数学建模大赛(CUMCM/NPMCM)之数学建模(经验/技巧)、流程(模型准备/模型假设/建模/求解/分析/优化/预测/评价)、论文写作(意义/摘要/关键词/问题重述和模型假设/建

热门文章

  1. POJ1251 Jungle Roads(kru)
  2. 器件选型-ARM7,ARM9,ARM11,Cortex系列基础知识
  3. TT 的旅行日记(Dijkstra)
  4. 干货丨Kubernetes 中分析调试网络流量的4种方法
  5. python自动化测试必备知识_2018教你应对Python移动自动化测试面试 面试分析 知识理论 面试技巧...
  6. 如果你要补充益生菌 ——益生菌补充、个体化、定植指南
  7. 【数字IC设计/FPGA】推挽输出和开漏输出
  8. 电路设计软件系列教程(五),Protel DXP电路设计软件之设计规则(上)
  9. Gustafson 定律
  10. unicode 特殊字符表 特殊符号