s21day12 python笔记
s21day12 python笔记
一、函数中高级
1.1 函数可以做返回值
#示例:
def func():
print(123)
def bar():
return func
v = bar()
v()
1.2 闭包
- 概念:为函数创建一块区域并为其维护自己数据,以后执行方便调用
- 应用场景:
- 装饰器
- SQLAlchemy源码
#示例:
name = 'oldboy'
def bar(name):
def inner():
print(name)
return inner
v1 = bar('alex') # { name=alex, inner } # 闭包,为函数创建一块区域(内部变量供自己使用),为他以后执行提供数据。
v2 = bar('eric') # { name=eric, inner }
v1()
v2()
#练习题:
#第一题
name = 'alex'
def base():
print(name)
def func():
name = 'eric'
base()
func()
# 第二题
name = 'alex'
def func():
name = 'eric'
def base():
print(name)
base()
func()
# 第三题
name = 'alex'
def func():
name = 'eric'
def base():
print(name)
return base
base = func()
base()
#注意:函数在何时被谁创建?
#示例:
info = []
def func():
print(item)
for item in range(10):
info.append(func)
info[0]()
#面试题
info = []
def func(i):
def inner():
print(i)
return inner
for item in range(10):
info.append(func(item))
info[0]()
info[1]()
info[4]()
1.3 高阶函数
- 把函数当作参数传递
- 把函数当作返回值
- 注意:对函数进行赋值
二、 内置函数补充
2.1 数学相关补充
pow():指数
v = pow(2,3) #相当于2**3 print(v) # 8
round():保留几位小数,默认保留整数,还会四舍五入
v = round(1.127,2) #第二个数代表保留几位小数,默认是None print(v) # 1.13 四舍五入
2.2 编码相关
chr():将十进制数字转换成 unicode 编码中的对应字符串
ord():根据字符在 unicode 编码中找到其对应的十进制
#应用:生成随机验证码 import random # 导入一个模块 def get_random_code(length=6): data = [] for i in range(length): v = random.randint(65,90) data.append(chr(v)) return ''.join(data) code = get_random_code() print(code)
2.3 内置函数高级
map(函数,可迭代对象):一起执行
- 循环每个元素(第二个参数),然后让每个元素执行函数(第一个参数),将每个函数执行的结果保存到新的列表中,并返回
#示例: v1 = [11,22,33,44] result = map(lambda x:x+100,v1) print(list(result))
filter(函数,可迭代对象):进行筛选
#示例: v1 = [11,22,33,'asd',44,'xf'] def func(x): if type(x) == int: return True return False result = filter(func,v1) print(list(result)) # 用lambda表达式: result = filter(lambda x: True if type(x) == int else False ,v1) print(list(result)) # 相当于: result = filter(lambda x: type(x) == int ,v1) print(list(result))
reduce(函数,可迭代对象):得到结果
import functools v1 = ['wo','hao','e'] def func(x,y): return x+y result = functools.reduce(func,v1) print(result) # 用lambda表达式: result = functools.reduce(lambda x,y:x+y,v1) print(result)
三、模块
3.1 random:随机数模块
import random # 导入一个模块
v = random.randint(起始,终止) # 得到一个随机数
#示例:生成随机验证码
import random
def get_random_code(length=6):
data = []
for i in range(length):
v = random.randint(65,90)
data.append(chr(v))
return ''.join(data)
code = get_random_code()
print(code)
3.2 hashlib:加密模块
# 将指定的 “字符串” 进行 加密
import hashlib # 导入一个模块
def get_md5(data): # md5 加密函数
obj = hashlib.md5()
obj.update(data.encode('utf-8'))
result = obj.hexdigest()
return result
val = get_md5('123')
print(val)
# 加盐
import hashlib
def get_md5(data):
obj = hashlib.md5("sidrsdxff123ad".encode('utf-8')) # 加盐
obj.update(data.encode('utf-8'))
result = obj.hexdigest()
return result
val = get_md5('123')
print(val)
# 应用:用户注册+用户登录
import hashlib
USER_LIST = []
def get_md5(data): # md5 加密函数
obj = hashlib.md5("12:;idrsicxwersdfsaersdfs123ad".encode('utf-8')) # 加盐
obj.update(data.encode('utf-8'))
result = obj.hexdigest()
return result
def register(): # 用户注册函数
print('**************用户注册**************')
while True:
user = input('请输入用户名:')
if user == 'N':
return
pwd = input('请输入密码:')
temp = {'username':user,'password':get_md5(pwd)}
USER_LIST.append(temp)
def login(): # 用户登录函数
print('**************用户登陆**************')
user = input('请输入用户名:')
pwd = input('请输入密码:')
for item in USER_LIST:
if item['username'] == user and item['password'] == get_md5(pwd):
return True
register()
result = login()
if result:
print('登陆成功')
else:
print('登陆失败')
3.3 getpass:只能在终端运行
import getpass # 导入一个模块
pwd = getpass.getpass('请输入密码:')
if pwd == '123':
print('输入正确')
s21day12 python笔记的更多相关文章
- Python笔记之不可不练
如果您已经有了一定的Python编程基础,那么本文就是为您的编程能力锦上添花,如果您刚刚开始对Python有一点点兴趣,不怕,Python的重点基础知识已经总结在博文<Python笔记之不可不知 ...
- boost.python笔记
boost.python笔记 标签: boost.python,python, C++ 简介 Boost.python是什么? 它是boost库的一部分,随boost一起安装,用来实现C++和Pyth ...
- 20.Python笔记之SqlAlchemy使用
Date:2016-03-27 Title:20.Python笔记之SqlAlchemy使用 Tags:python Category:Python 作者:刘耀 博客:www.liuyao.me 一. ...
- Python笔记——类定义
Python笔记——类定义 一.类定义: class <类名>: <语句> 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性 如果直接使用类名修改其属 ...
- 13.python笔记之pyyaml模块
Date:2016-03-25 Title:13.Python笔记之Pyymal模块使用 Tags:Python Category:Python 博客地址:www.liuyao.me 作者:刘耀 YA ...
- 8.python笔记之面向对象基础
title: 8.Python笔记之面向对象基础 date: 2016-02-21 15:10:35 tags: Python categories: Python --- 面向对象思维导图 (来自1 ...
- python笔记 - day8
python笔记 - day8 参考: http://www.cnblogs.com/wupeiqi/p/4766801.html http://www.cnblogs.com/wupeiqi/art ...
- python笔记 - day7-1 之面向对象编程
python笔记 - day7-1 之面向对象编程 什么时候用面向对象: 多个函数的参数相同: 当某一些函数具有相同参数时,可以使用面向对象的方式,将参数值一次性的封装到对象,以后去对象中取值即可: ...
- python笔记 - day7
python笔记 - day7 参考: http://www.cnblogs.com/wupeiqi/articles/5501365.html 面向对象,初级篇: http://www.cnblog ...
随机推荐
- python学习笔记:装饰器2
python的装饰器本质是函数,为了不改变装饰目标函数内部代码而增加额外功能而存在 一.一般装饰函数实例: import datetime def func_name(func):#定义一个装饰函数, ...
- [c/c++] programming之路(25)、字符串(六)——memset,Unicode及宽字符,strset
一.memset #include<stdio.h> #include<stdlib.h> #include<memory.h> void *mymemset(vo ...
- 剑指offer(14)链表中倒数第K个节点
题目描述 输入一个链表,输出该链表中倒数第k个节点. 题目分析 用两个指针来跑,两个指针中间相距k-1个节点,第一个指针先跑,跑到了第k个节点时,第二个指针则是第一个节点. 这时候两个一起跑.当第一个 ...
- react-router 4.0(三)根据当前url显示导航
import React, { PropTypes } from 'react' import ReactDOM from 'react-dom' import { HashRouter, Route ...
- Learning-Python【23】:面向对象三大特性
继承 封装 多态
- Mac cnpm安装失败及解决方案
首先安装node 官网下载安装包,傻瓜式安装:https://nodejs.org/zh-cn/ 淘宝镜像安装cnpm, 在终端输入: npm install -g cnpm --registry=h ...
- 补充一下 sizeof
sizeof是一个运算符,给出某个类型或变量在内存中所占据的字节数 sizeof(int) //告诉你int占据几个字节 sizeof(i) //告诉你i这个变量占据几个字节 注:sizeof是静态运 ...
- 【转】Angular学习总结--很详细的教程
*这篇文章是转来的,做了自己的一点修改,排版.原始出处不明,如涉及原博主版权问题,请及时告知,我将会立即删除*. 1 前言 前端技术的发展是如此之快,各种优秀技术.优秀框架的出现简直让人目不暇接,紧跟 ...
- linux安装redis ,mariadb
linux下安装软件方法 1 rpm (不推荐使用) 2 yum 安装(非常方便快捷) 3 编译安装(需要自定制的时候才使用) 安装mariadb(mysql) 1 使用官方源安装mariadb vi ...
- C++将十进制数转化为二进制
#include<iostream> using namespace std; void main() { ; ]; cin>>n; i=n; while(i) { a[j]= ...