Python知识点总结篇(四)
递归
- 特性
- 必须有明确的结束条件;
- 每进入深一层递归,问题规模比上层应有所减少;
- 递归效率不高,层次更多会导致栈溢出;
def calc(n):
print(n)
if n // 2 > 0:
return calc(n // 2)
calc(10)

函数式编程
- 计算机:在计算机层面,CPU执行的是加减乘除以及各种判断和跳转指令代码,因而汇编是最贴近计算机的语言,越接近计算机底层的语言执行效率越高;
- 计算:指数学意义上的计算,越抽象的计算,离计算机硬件越远,效率越低;
- 定义:一种抽象程度极高的编程范式,纯粹的函数式编程语言编写的函数没有变量,故对于一个函数,只要输入确定,输出就确定,函数式编程是一种讨论如何编程的方法论,主要思想是把运算过程尽量集成一系列嵌套的函数调用;
高阶函数
- 定义:把其他函数作为参数的函数叫做高阶函数;
def add(x, y, func):
return func(x) * func(y)
result = add(4, 8, abs)
print(result)

修饰器
- 原则:
- 不能修改被装修函数的源代码;
- 不能修改被装饰函数的调用方式;
# --*--coding:utf-8--*--
#! /usr/bin/python3
user, passwd = 'k', '12345'
def auth(func):
def wrapper(*args, **kwargs):
username = input('username:').strip()
password = input('passwd:').strip()
if user == username and passwd == password:
print('passed')
func(*args, **kwargs)
else:
exit('Invalid username or password.')
return wrapper
def index():
print('welcomt to index page')
@auth
def home():
print('welcome to home page')
@auth
def bbs():
print('welcomt to bbs page')
index()
home()
bbs()

迭代器与生成器
- 生成器:
generator,列表元素按某种算法推算而出,一边循环一边计算的机制,称为生成器,只有在调用时才产生相应数据; - 直接作用域
for循环的对象称为可迭代对象,Iterable,使用isinstance()判断一个对象是否为Iterable对象,可用于for循环的数据类型有 以下两类:- 集合数据类型:
list、tuple、dict、set、str等 generator,包括生成器和带yield的可迭代对象;
- 集合数据类型:
- 迭代器: 可以别
next()函数调用并不断返回下一个值的对象称为迭代器,他们表示一个惰性计算的序列,Iterator; - 生成对象都是迭代器对象,
list、dict、str虽然是可迭代对象,但却不是迭代器,使用iter()函数可将他们从迭代对象转换为迭代器;
json和pickle数据序列化
# json序列化与反序列化
import json
info = {
'name':'k',
'age':22
'sex':'男'
}
# 序列化
f = open('test.txt', 'w')
f.write(json.dumps(info))
# 反序列化
f = open('test.txt', 'r')
data = json.loads(f.read())
print(data['sex'])
f.close()
# pickle序列化与反序列化
import pickle
info = {
'name':'k',
'age':22
'sex':'男'
}
# 序列化
f = open('test.txt', 'wb')
f.write(pickle.dumps(info)) #与下一句作用相同
pickle.dump(info, f)
# 反序列化
f = open('test.txt', 'rb')
data = pickle.loads(f.read())
print(data['sex'])
f.close()
欢迎关注微信公众号:村雨1943;创作不易,未经同意,转载请注明出处~
Python知识点总结篇(四)的更多相关文章
- Python知识点总结篇(五)
软件目录结构规范 目标: 提高可读性: 提高可维护性: 常见结构 Demo/ |-- bin/ #存放项目的一些可执行文件 | |-- demo #可执行程序,启动demo调main.py | |-- ...
- Python知识点总结篇(三)
文件操作 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量: 通过句柄对文件进行操作: 关闭文件: with:自动关闭文件: with open('log', 'r') as f: ... 文件 ...
- Python知识点总结篇(一)
Python基础 变量 变量类型: 1.数字型 整形:int: 浮点型:float: 布尔型:bool,True和False: 复数型:complex: 2.非数字型 字符串: 列表: 元祖: 字典: ...
- Python知识点总结篇(二)
列表 列表:一个值,包含多个字构成的序列,用[ ]括起来,[]是一个空列表,不包含任何值,类似于空字符串,负数下标表示从后边开始,-1表示列表最后一个下标,它是一种可变的数据类型,值可以添加.删除或改 ...
- Python之路(第四十六篇)多种方法实现python线程池(threadpool模块\multiprocessing.dummy模块\concurrent.futures模块)
一.线程池 很久(python2.6)之前python没有官方的线程池模块,只有第三方的threadpool模块, 之后再python2.6加入了multiprocessing.dummy 作为可以使 ...
- 第六篇:Python函数进阶篇
在了解完了 Python函数基础篇之后,本篇的存在其实是为了整合知识,由于该篇的知识是否杂乱,故大家可以通过点开点连接直接进入其详细介绍,该篇主要大致的介绍一下几个知识点: 一.Python的迭代器 ...
- Python知识点汇总
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- 《python开发技术详解》|百度网盘免费下载|Python开发入门篇
<python开发技术详解>|百度网盘免费下载|Python开发入门篇 提取码:2sby 内容简介 Python是目前最流行的动态脚本语言之一.本书共27章,由浅入深.全面系统地介绍了利 ...
- 机器学习算法与Python实践之(四)支持向量机(SVM)实现
机器学习算法与Python实践之(四)支持向量机(SVM)实现 机器学习算法与Python实践之(四)支持向量机(SVM)实现 zouxy09@qq.com http://blog.csdn.net/ ...
随机推荐
- 第03组 Alpha冲刺(4/4)
队名:不等式方程组 组长博客 作业博客 团队项目进度 组员一:张逸杰(组长) 过去两天完成的任务: 文字/口头描述: 制定了初步的项目计划,并开始学习一些推荐.搜索类算法 GitHub签入纪录: 暂无 ...
- javaweb利用filter拦截未授权请求
项目上有个小需求,要限制访问者的IP,屏蔽未授权的请求.该场景使用过滤器来做再合适不过了. SecurityFilter.java: public class SecurityFilter imple ...
- [原创]浅谈对任务分解法WBS应用
[原创]浅谈对任务分解法WBS应用 1.WBS是什么? 即Work Breakdown Structure如何进行WBS分解:目标→任务→工作→活动 2.WBS分解的原则:将主体目标逐步细化分解,最底 ...
- java 多页pdf转化为多张图片
相关jar包: <dependency> <groupId>com.itextpdf</groupId> <artifactId>itext-asian ...
- 对IT战略的认识
提到战略,我不由想起了战术这个名词.按照我的理解,战术属于短期内的计划,是战略的组成部分,是实施次战略的短期工作计划或行动步骤:而战略是用来帮助我们赢取目标的行动计划(例如为获得更多的潜在客户而制定的 ...
- linux中nohup 与 & 的区别
Linux/Unix下,通常只有守护进程可在脱离终端的情况下能继续执行,而普通进程在关闭终端时会因收到SIGHUP信号(挂起信号)而退出.当终端退出后,由该终端启动的后台程序自动退出. 若想命令在后台 ...
- bitcoinjs-lib 哈希交易之多笔交易合并。
转账的时候需要手动寻找每一笔未花费记录实在太费时. 比特币转账需要提取或合并所有未花费的交易中的比特币,才能实现交易. import * as bitcoin from 'bitcoinjs-lib' ...
- pg中与超时设置有关的参数
statement_timeout控制语句执行时长,单位是ms.超过设定值,该语句将被中止.不推荐在postgresql.conf中设置,因为会影响所有的会话,如非要设置,应该设置一个较大值. loc ...
- config:fail,Error: 系统错误,错误码:63002,invalid signature [20191104 17:18:1
需要检查下后端有没有缓存到redis.这个很重要不然也会报这个错
- pycharm把制表符(tab)转换为空格(PEP8)
pycharm把制表符转换为4个空格 pycharm显示空格