Python学习笔记(十)
Python学习笔记(十):
- 装饰器的应用
- 列表生成式
- 生成器
- 迭代器
- 模块:time,random
1. 装饰器的应用-登陆练习
login_status = False # 定义登陆状态
def type(auth_type): # 装饰器传参函数
def login(fucn): # 装饰器函数
def inner(): # 附加功能
global login_status # 将登陆状态变量变为全局变量
if login_status == False:
if auth_type == 'jingdong':
username = input('username:')
password = input('password:')
with open('jingdong.txt','r') as f:
lines = f.readlines()
for i in lines:
i = eval(i)
if username in i and password == i[username]:
print('welcome %s' % (username))
login_status = True
fucn()
else:
print('wrong username or password')
elif auth_type == 'weixin':
username = input('username:')
password = input('password:')
with open('weixin.txt', 'r') as f:
lines = f.readlines()
for i in lines:
i = eval(i)
if username in i and password == i[username]:
print('welcome %s' % (username))
login_status = True
fucn()
else:
print('wrong username or password')
else:
pass
return inner
return login
@type('jingdong') # 连接装饰器
def home(): # 功能函数
print('welcome to home page')
@type('weixin')
def finance():
print('welcome to finance page')
@type('jingdong')
def book():
print('welcome to book page')
if __name__ == '__main__':
while True:
print('welcome to JD:')
print('choice 1 to home')
print('choice 2 to finance')
print('choice 3 to book')
print('choice 0 to back')
choice = input('Where are you going:')
if choice == '1':
home()
elif choice == '2':
finance()
elif choice == '3':
book()
elif choice == '0':
break
2. 列表生成式
代码示例:
a = [x for x in range(10)]
print(a) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
a = [x*2 for x in range(10)]
print(a) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
def f(n):
return n**3
a = [f(x) for x in range(10)]
print(a) # [0, 1, 8, 27, 64, 125, 216, 343, 512, 729]
3. 生成器
代码示例:
# 第一种方法
s = (x for x in range(100)) # 生成器
# for的作用:消除内存占用,判断遍历完成
for i in s:
print(i)
# 第二种方法
def foo():
i = range(22)
yield i
for i in foo():
print(i)
# send方法给yield赋值
def bar():
print('ok1')
count = yield 1 # 接收'ee'
print(count)
print('ok2')
yield 2
b = bar()
b.send(None) # 相当于next(b)
b.send('ee') # 将'ee'赋值给第一个yield
4. 迭代器
- 生成器都是迭代器
什么是迭代器?
- 有iter方法
- 有next方法
5. 模块
1. time模块
函数/方法:
time() -- return current time in seconds since the Epoch as a float
clock() -- return CPU time since process start as a float
sleep() -- delay for a number of seconds given as a float
gmtime() -- convert seconds since Epoch to UTC tuple
localtime() -- convert seconds since Epoch to local time tuple
asctime() -- convert time tuple to string
ctime() -- convert time in seconds to string
mktime() -- convert local time tuple to seconds since Epoch
strftime() -- convert time tuple to string according to format specification
strptime() -- parse string to time tuple according to format specification
tzset() -- change the local timezone
代码示例:
print(time.strftime('%Y-%m-%d %H:%M:%S')) #2017-09-20 13:44:01
print(time.strptime('2017-09-20 12:53:21','%Y-%m-%d %H:%M:%S'))
# time.struct_time(tm_year=2017, tm_mon=9, tm_mday=20, tm_hour=12, tm_min=53, tm_sec=21, tm_wday=2, tm_yday=263, tm_isdst=-1)
2. random模块
print(random.randint(1,8)) # 从1-8中随机取值
print(random.choice('hello')) # 从‘hello’中随机取一个字母
# 实现验证码
def v_code():
code = ''
for i in range(5):
add = random.choice([random.randrange(10),chr(random.randrange(65,91))])
code += str(add)
print(code)
v_code()
Python学习笔记(十)的更多相关文章
- Python学习笔记(十二)—Python3中pip包管理工具的安装【转】
本文转载自:https://blog.csdn.net/sinat_14849739/article/details/79101529 版权声明:本文为博主原创文章,未经博主允许不得转载. https ...
- python学习笔记(十 一)、GUI图形用户界面
python图形用户界面就是包含按钮.输入框.选择框等组件的窗口.主要依赖与工具包进行代码编写.python GUI工具包并发互斥的,你可以选择多个工具包进行安装,有极大选择空间.每个工具包都有不同用 ...
- python 学习笔记(十二) 文件和序列化
python 文件读写和序列化学习.## python文件读写`1 打开并且读取文件` f = open('openfile.txt','r') print(f.read()) f.close() ` ...
- python 学习笔记十九 django深入学习四 cookie,session
缓存 一个动态网站的基本权衡点就是,它是动态的. 每次用户请求一个页面,Web服务器将进行所有涵盖数据库查询到模版渲染到业务逻辑的请求,用来创建浏览者需要的页面.当程序访问量大时,耗时必然会更加明显, ...
- python 学习笔记十八 django深入学习三 分页,自定义标签,权限机制
django Pagination(分页) django 自带的分页功能非常强大,我们来看一个简单的练习示例: #导入Paginator>>> from django.core.p ...
- python 学习笔记十六 django深入学习一 路由系统,模板,admin,数据库操作
django 请求流程图 django 路由系统 在django中我们可以通过定义urls,让不同的url路由到不同的处理函数 from . import views urlpatterns = [ ...
- python 学习笔记十五 web框架
python Web程序 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. Python的WEB框架分为两类: 自己写socket,自 ...
- python 学习笔记十五 django基础
Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...
- python 学习笔记十四 jQuery案例详解(进阶篇)
1.选择器和筛选器 案例1 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- python 学习笔记十二 html基础(进阶篇)
HTML 超级文本标记语言是标准通用标记语言下的一个应用,也是一种规范,一种标准,它通过标记符号来标记要显示的网页中的各个部分.网页文件本身 是一种文本文件,通过在文本文件中添加标记符, 可以告诉浏览 ...
随机推荐
- java简单数据类型转化
java简单数据类型,有低级到高级为:(byte,short,char)→int→long→float→double (boolean不参与运算转化) 转化可以分为 低级到高级的自动转化 高级到低级的 ...
- 201521123032 《Java程序设计》第3周学习总结
1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识组织起来.请使用纸笔或者下面的工具画出本周学习到的知识点.截图或者拍照上传. 2. 书面作 ...
- 201521123111《Java程序设计》第14周学习总结
本次作业参考文件 MySql操作视频与数据库相关jar文件请参考QQ群文件. 1. 本周学习总结 1.1 以你喜欢的方式(思维导图.Onenote或其他)归纳总结多数据库相关内容. 连接数据库前,应先 ...
- Log4J:Log4J三大组件:Logger+Appender+Layout 格式化编程详解
快速了解Log4J Log4J的三个组件: Logger:日志记录器,负责收集处理日志记录 (如何处理日志) Appender:日志输出目的地,负责日志的输出 (输出到什么 地方) Layo ...
- Eclipse rap 富客户端开发总结(14) :rap 图片、数据缓存处理
一.概述 在进行了 rap 的基本学习之后,您对 rap 的理解是否进入了更高的一个层次呢,个人觉得,对学习 rap 的人来说,进行 rap 的学习是一个探索的过程,在编程中不断的对其进行理解和分析, ...
- Eclipse rap 富客户端开发总结(7) : 如何修改rap的样式
1. Rap样式原理 Rap的界面样式目前是以css来配置的,程序启动后加载相应的css配置文件再对组件进行样式设置,界面上的所有组件 Label button composit等的样式最开始都是通 ...
- net core 安装web模板
---恢复内容开始--- 今天想试试在Linux用C#开发WebAPI,查了下,要用: dotnet new -t Web 来建立工程,结果我试了下,出来这段: Invalid input switc ...
- Django实现内容缓存
1.缓存的简介 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作,都会 ...
- 过度拟合(overfilting)
过拟合概念:是指分类器能够百分之百的正确分类样本数据(训练集中的样本数据),对训练集以外的数据却不能够正确分类. 原因:1:模型(算法)太过复杂,比如神经网络,算法太过精细复杂,规则太过严格,以至于任 ...
- [转]IOS开发中的CGFloat、CGPoint、CGSize和CGRect
http://developer.apple.com/library/ios/#documentation/GraphicsImaging/Reference/CGGeometry/Reference ...