ql的python学习之路-day7
函数与函数式编程
一.编程模式分为三种:
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的更多相关文章
- python学习之路-day7
本节内容: 面向对象高级语法部分 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 面向对象高级语法部分 静态方法 ...
- ql的python学习之路-day15
前言:本节主要讲解的是文件路径 在实际的软件开发中会设计一个项目的文件目录,按照执行包bin.配置包config.核心包core等来设计,在执行包里面要运行核心包里的主程序mian,由于不在同一级的目 ...
- ql的python学习之路-day14
前言:本节主要学习时间模块time.datetime python中的几种时间表示:1)时间戳 2)格式化的字符串时间 3)struct_time元组格式的时间 time.datetime模块源码: ...
- ql的python学习之路-day13
前言:本节主要学习模块 一.模块的定义 模块:本质是.py结尾的python文件(文件名:test.py,对应的模块是:test),用来从逻辑上组织python代码(变量.函数.类.逻辑,本质是实现一 ...
- ql的python学习之路-day12
前言:这一节主要学习json和pickle 背景: 相信大家在日常生活中都有接触大型的网络游戏,打游戏的时候都是自己在电脑上操作,自己刷怪升级:当然也会碰到中午去吃饭然后挂机的情况,让电脑自动的刷怪, ...
- ql的python学习之路-day11
前言:本节主要学习python内置的方法 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:qinjiaxi from collections ...
- ql的python学习之路-day10
前言:本节主要讲解迭代器和生成器 迭代器&生成器 一.生成器(generator) 循环占用大部分的容量内存,如果只需要循环前面的几个结果那怎么样做呢,在python中有一种一边循环一边计算的 ...
- ql的python学习之路-day9
前言:本节主要学习装饰器 一.装饰器 定义:本质上是个函数,用来装饰其他函数:(就是为其他函数添加附加功能) 原则:1.不能修改被装饰的函数的源代码 2.不能修改被装饰的函数的调用方式 以上两点可以总 ...
- ql的python学习之路-day8
前言:本节主要学习的是函数的全局变量和局部变量以及递归 一.全局变量和局部变量 定义在函数外并且在函数头部的变量,叫做全局变量,全局变量在整个代码中都生效. 局部变量只在函数里生效,这个函数就叫做这个 ...
随机推荐
- JVM致命错误日志详解
目录 文件描述 文件位置 文件头 错误信息记录 JVM运行信息 崩溃原因 错误信息 线程描述 线程信息 信号信息 计数器信息 机器指令 内存映射信息 线程堆栈 其他信息 进程描述 线程列表 虚拟机状态 ...
- LeetCode 面试题56 - I. 数组中数字出现的次数 | Python
面试题56 - I. 数组中数字出现的次数 题目 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次.请写程序找出这两个只出现一次的数字.要求时间复杂度是O(n),空间复杂度是O(1). ...
- IDEA设置导入主题样式皮肤,加入背景图片
主题下载地址:http://www.riaway.com/theme.php 里面有很多主题,看个人喜好,这里我用的Monokai Sublime Text 3. 导入主题打开IDEA,找到File ...
- Codeforces Round #635 (Div. 2) 题解
渭城朝雨浥轻尘,客舍青青柳色新. 劝君更尽一杯酒,西出阳关无故人.--王维 A. Ichihime and Triangle 网址:https://codeforces.com/contest/133 ...
- 搭建Springboot+mybatis+redis+druid
2019独角兽企业重金招聘Python工程师标准>>> 准备工作 JDK:1.8 使用技术:SpringBoot.Dubbo.Mybatis.Druid 开发工具:Intelj ID ...
- 谁需要GUI?快看Linux 终端生存之道
完全在 Linux 终端中生存并不容易,但这绝对是可行的. 处理常见功能的最佳 Linux shell 应用 你是否曾想像过完完全全在 Linux 终端里生存?没有图形桌面,没有现代的 GUI 软件, ...
- checked 完整版全选,单选,反选
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link rel= ...
- Web 跨域请求问题的解决方案- CORS 方案
1.什么是跨域 跨域是指跨域名的访问,以下情况都属于跨域: 跨域现象 实例 域名不相同 www.baidu.com与www.taobao 一级域名相同,但是端口不相同 www.baidu.com:80 ...
- IDEA破解,自动激活【2020年版本也可以破解】
破解 在破解之前,需要下载的文件有两个ideaIU-2019.3.3.exe.jetbrains-agent-latest.zip,前者是程序安装包,后者是破解补丁包(PS:补丁包里面有使用说明,下面 ...
- CC2530通用IO口的输入输出
一.引脚概述 CC2530有40 个引脚.其中,有21个数字I/O端口,其中P0和P1是8 位端口,P2仅有5位可以使用.P2端口的5个引脚中,有2个需要用作仿真,有2个需要用作晶振.所以可供我们使用 ...