ql的python学习之路-day7
函数与函数式编程
一.编程模式分为三种:
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相关推荐
- ql的python学习之路-day10
前言:本节主要讲解迭代器和生成器 迭代器&生成器 一.生成器(generator) 循环占用大部分的容量内存,如果只需要循环前面的几个结果那怎么样做呢,在python中有一种一边循环一边计算的 ...
- python学习之路-day7
本节内容: 面向对象高级语法部分 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 面向对象高级语法部分 静态方法 ...
- ql的python学习之路-day9
前言:本节主要学习装饰器 一.装饰器 定义:本质上是个函数,用来装饰其他函数:(就是为其他函数添加附加功能) 原则:1.不能修改被装饰的函数的源代码 2.不能修改被装饰的函数的调用方式 以上两点可以总 ...
- ql的python学习之路-day3
字典操作 特性: 1.无序的 2.key是唯一的 #!/usr/bin/env python# -*- coding utf-8 -*-# Author:qinjiaxiinfo = {'name1' ...
- python之路 mysql 博客园_教为学:Python学习之路(二):MySQLdb的几种安装方式,以及用Python测试连接MySql...
教为学:Python学习之路(二):MySQLdb的几种安装方式,以及用Python测试连接MySql Easy_install安装MySQLdb 很简单,以至于我不晓得该怎么说.一句话. sodu ...
- Python学习之路—2018/7/14
Python学习之路-2018/7/12 3.功能开发 3.3 设计博客首页 博客首页中最重要的就是中间的文章区域,所以我首先把文章区域设计出来,一开始并没有数据,如果用orm添加或者直接在数据库添加 ...
- Python学习之路—2018/6/20
Python学习之路-2018/6/20 1.模板语法之变量 views.py def index(request):import datetimes="gyq"l=[1,2,3] ...
- Python学习之路9☞面向对象的程序设计
Python学习之路9☞面向对象的程序设计 一 面向对象的程序设计的由来 见概述:http://www.cnblogs.com/linhaifeng/articles/6428835.html 二 什 ...
- python 学习之路开始了
python 学习之路开始了.....记录点点滴滴.... 转载于:https://www.cnblogs.com/chobit/p/6163287.html
- Python学习之路5☞文件处理
Python学习之路5☞文件处理 一.文件处理流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 1 正趣果上果 2 Interesting fruit fruit 3 4 ...
最新文章
- 暑期集训2:ACM基础算法 例2:POJ-2456
- 如何给女朋友解释并发与并行的区别?
- nginx.pid failed (2: The system cannot find the file specified
- 五大微信小程序开发IDE深度评测
- yelee主题修改博客左侧文章目录的按钮字体
- ACL2020 奇葩论文标题大赏
- Java 8 为什么要使用Lambda表达式
- 中国光伏产业将面临何种形势?
- Java中使用POI导出excel文件
- cocosbuilder源码编译
- GB/T19001—2008质量管理体系要求、标准、贯标(贯彻标准)
- Android 实现Home按键功能的两种方式
- 创新工场王嘉平开讲:low-level的计算机视觉
- android gson工具包,Android Study 之 彻底解决 Gson解析 异常
- PHP 操作redis 详细讲解
- 处理:“ORA-00257: archiver error. Connect internal only, until freed”的错误问题
- 发布一个JINI服务
- RISC-V为中国MCU企业打开一个新窗口!
- 【机器学习】经典的机器学习200道面试题(附参考答案)
- Algorithm:数学建模大赛(CUMCM/NPMCM)之数学建模(经验/技巧)、流程(模型准备/模型假设/建模/求解/分析/优化/预测/评价)、论文写作(意义/摘要/关键词/问题重述和模型假设/建
热门文章
- POJ1251 Jungle Roads(kru)
- 器件选型-ARM7,ARM9,ARM11,Cortex系列基础知识
- TT 的旅行日记(Dijkstra)
- 干货丨Kubernetes 中分析调试网络流量的4种方法
- python自动化测试必备知识_2018教你应对Python移动自动化测试面试 面试分析 知识理论 面试技巧...
- 如果你要补充益生菌 ——益生菌补充、个体化、定植指南
- 【数字IC设计/FPGA】推挽输出和开漏输出
- 电路设计软件系列教程(五),Protel DXP电路设计软件之设计规则(上)
- Gustafson 定律
- unicode 特殊字符表 特殊符号