函数与函数式编程

一.编程模式分为三种:

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

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

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

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

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

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

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

 #!/user/bin/env python
#-*-coding:utf-8 -*-
#Author: qinjiaxi
#函数
def func1():
"""testing1"""
print('in the func1')
return 0
#过程
def func2():
"""testing2"""
print('in the func2')
x = func1()#调用函数
y = func2()#调用过程
print('func1 return: {}'.format(x))#函数有返回值返回定义函数时的0
print('func2 return: {}'.format(y))#过程没有返回值返回None

二.为什么要使用函数

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

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

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

三.函数的返回值

1.返回值个数=0,返回None

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

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

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

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

五.函数的参数

 #!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:qinjiaxi #位置参数和关键字参数
def test(x,y):
print(x,y)
test(1,2)#1,2是位置参数,按照位置来传递函数参数,与形参一一对应
test(y = 1, x = 2)#此时y和x是关键字参数,将形参赋值与形参顺序无关
"其中x,y是形参,1、2是实参"
"位置参数和关键字参数共同使用的时候:必须位置参数放在前面,否则报错" #默认参数
def test1(x, y =2):
print(x,y)
test1(1)
"默认参数:在定义函数的时候给形参赋值" \
"默认参数的特点:调用函数的时候,默认参数非必须传递,如果传递就修改之前的赋值" \
"默认参数的用途:1.提前固定值,默认安装值 2.连接数据库时使用默认参数可以固定端口号" \ #参数组(也叫收集参数)
#传递多个参数
def test2(*args):
print(args)
test2(1,2,3,4,5)#接受多个实参,将参数传进去得到一个元组
test2(*[1,2,3,4,5])# args = tuple([1,2,3,4,5]) def test3(x, *args):
print(x)
print(args)
test3(1,2,3,4,5)#将1传给1,其他的以元组的形式传递给args #传递多个字典参数
def test4(**kwargs):
print(kwargs)
test4(name = 'qinlang', age = 3)#接收关键字参数变成字典
test4(**{'name': 'qinlang', 'age': ''})#kwargs = dict({'name':'qinlang', 'age':'3'})
"功能:把N个关键字参数,转换为字典的方式" def test5(name,**kwargs):
print(name)
print(kwargs)
test5('秦朗', x = 111 ,y =222, age = 8)#先接受位置参数,然后把关键字参数变成字典 def test6(name, age = 3, **kwargs):
print(name)
print(age)
print(kwargs)
test6('秦朗',hobby = 'play',age = 3.5)#先接受位置参数,然后接受默认参数,最后将关键字参数变成字典 "总结:*args接受的是位置参数,如果调用函数的时候不传递则返回一个空元组"
" *kwargs接受的是关键字参数,如果调用函数的时候不传递则返回一个空字典"
" 默认参数在调用的时候可以写可以不写,如果写的话有两种方式一是在固定位置写值、二是以关键字参数传递"
" 最后强调,位置参数一定得放在关键字参数的后面"

ql的python学习之路-day7的更多相关文章

  1. python学习之路-day7

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

  2. ql的python学习之路-day15

    前言:本节主要讲解的是文件路径 在实际的软件开发中会设计一个项目的文件目录,按照执行包bin.配置包config.核心包core等来设计,在执行包里面要运行核心包里的主程序mian,由于不在同一级的目 ...

  3. ql的python学习之路-day14

    前言:本节主要学习时间模块time.datetime python中的几种时间表示:1)时间戳  2)格式化的字符串时间 3)struct_time元组格式的时间 time.datetime模块源码: ...

  4. ql的python学习之路-day13

    前言:本节主要学习模块 一.模块的定义 模块:本质是.py结尾的python文件(文件名:test.py,对应的模块是:test),用来从逻辑上组织python代码(变量.函数.类.逻辑,本质是实现一 ...

  5. ql的python学习之路-day12

    前言:这一节主要学习json和pickle 背景: 相信大家在日常生活中都有接触大型的网络游戏,打游戏的时候都是自己在电脑上操作,自己刷怪升级:当然也会碰到中午去吃饭然后挂机的情况,让电脑自动的刷怪, ...

  6. ql的python学习之路-day11

    前言:本节主要学习python内置的方法 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:qinjiaxi from collections ...

  7. ql的python学习之路-day10

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

  8. ql的python学习之路-day9

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

  9. ql的python学习之路-day8

    前言:本节主要学习的是函数的全局变量和局部变量以及递归 一.全局变量和局部变量 定义在函数外并且在函数头部的变量,叫做全局变量,全局变量在整个代码中都生效. 局部变量只在函数里生效,这个函数就叫做这个 ...

随机推荐

  1. mybatis源码学习:插件定义+执行流程责任链

    目录 一.自定义插件流程 二.测试插件 三.源码分析 1.inteceptor在Configuration中的注册 2.基于责任链的设计模式 3.基于动态代理的plugin 4.拦截方法的interc ...

  2. python学习08排序算法举例

    '''''''''排序算法:前提是所有数按照从小到大的顺序排列.1.冒泡算法将第一数与第二个数比较大小,如果第一个数比第二个数大,则沉底(交换位置,使大数在小数后面,这个过程类似于大泡沉底的过程) ' ...

  3. Android自绘制控件

    开发过程中,我们免不了需要用到一些自定义的 View,自定义 View 一般可分为三类: ① 继承类 View —— 一般继承系统以后的基本 View,新增/重置一些自定义属性 ,例如两端对齐的Tex ...

  4. C6 C7的开机启动流程

    C6开机启动流程 1.内核引导,加电自检(通电后检查内核):检查bios的配置,检测硬件 装好系统之后才会进行以下内容 MBR 引导 (3.2.1...) GRUB菜单 (选择不同的系统)(按e,进入 ...

  5. 用数据说话,R语言有哪七种可视化应用?

    今天,随着数据量的不断增加,数据可视化成为将数字变成可用的信息的一个重要方式.R语言提供了一系列的已有函数和可调用的库,通过建立可视化的方式进行数据的呈现.在使用技术的方式实现可视化之前,我们可以先和 ...

  6. 我想solo自己一个人!

    区域赛之后你就该走了,现在你告诉我,没精力不打了,我真谢谢你! 今年就TM的没有一点舒心的地方! 父母分居, 队友出走, 队伍解散, 白天家里两个外甥很吵, 鼻窦炎复发, 喜欢的妹子也追不到, 整夜失 ...

  7. 01 微信小程序入门

    一. 小程序介绍 微信小程序是腾讯于2017年1月9日推出的一种不需要下载安装即可在微信平台上使用的应用,主要提供给企业.政府.媒体.其他组织或个人的开发者在微信平台上提供服务. 微信小程序和微信的原 ...

  8. Linova and Kingdom(树型-贪心)

    题目大意:给定一棵树,1为首都(首都可以是工业城市也可以是旅游城市),一共有n个点. 其中要选出k个工业城市,每个工业城市出一个代表去首都,其快乐值是其途径旅游城市(非工业)的个数 求所有快乐值相加的 ...

  9. SAP CSO1创建BOM

      1业务说明 此文档使用BAPI:BAPI_MATERIAL_BOM_GROUP_CREATE创建BOM 2前台实现 事务代码:CS01 输入行项目信息 保存即可 3代码实现 3.1调用BAPI 抬 ...

  10. js数据类型很简单,却也不简单

    最近脑子里有冒出"多看点书"的想法,但我个人不是很喜欢翻阅纸质书籍,另一方面也是因为我能抽出来看书的时间比较琐碎,所以就干脆用app看电子书了(如果有比较完整的阅读时间,还是建议看 ...