python的学习之路day4
大纲
1、一些常用的内置函数
callable()
chr() & ord()
随机生成验证码
map()
全局变量,局部变量
hash() & round()
max() min() sum()
zip()
2、装饰器
一些常用的内置函数:
内置函数一:
# callable()#检查函数是否能被调用,返回True、False
def f1():
pass # f1()#能被调用
f2 = 123
# f2()# 这个不能被调用 print(callable(f1)) # 能被调用
print(callable(f2)) # 不能被调用 True
False
callable()
# 查看对应的ascii码
# ord()把ASCII转换成数字
# chr()则相反,把数字转换成ASCII
r = chr(65)
print(r) # A
n = ord("a")
print(n) # A
97
chr() and ord()
#随机验证码
import random # 加入随机验证码模块 li = []
for i in range(6): # 循环
temp = random.randrange(65, 91) # 方法返回指定递增基数集合中的一个随机数
c = chr(temp) # 把数字转换成ASCII,原来为数字,所以转换为了大写字母,因为65-91对应的ASCII为大写字母
li.append(c) # 将每次转换的ascii加入到列表中
result = "".join(li) # 用join方法把列表转换为字符
print(result) # 每次随机输出
# input_li = input("input li:")
# if input_li == result:
# print("登录成功") # 以下是修改版
# v2,这个修改版可以随机出现数字
import random li = []
for i in range(6):
r = random.randrange(0, 4) # 返回一个随机数
if r == 2 or r == 4: # 如果返回的随机数等于2或者等于4的时候,让他继续下一步操作
num = random.randrange(0, 10)
li.append(str(num)) # 用字符串的方式将随机生成的值添加到li列表中
else:
temp = random.randrange(65, 91)
c = chr(temp)
li.append(c)
result = "".join(li)
print(result) DYHVPI
2QMTCM
生成随机验证码
内置函数二:
# map
li = [11, 22, 33, 44, 55] # map #将函数返回值添加到结果中
# map(函数,可迭代的对象(可以for循环的东西))
def f2():
return a + 100 # result = map(f2, li)
result = map(lambda a: a + 100, li) # 又用到了lambda表达式
print(list(result)) # 没用map函数
li = [11, 22, 33, 44, 55] def f1(args):
result = []
for i in args:
result.append(100 + i)
return result # 返回result r = f1(li)
print(r) [111, 122, 133, 144, 155]
[111, 122, 133, 144, 155]
map
# 全局变量 globals()、局部变量 locals()
aa = "qwe" def f1():
a = 123
print(globals())
print(locals()) f1() {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x02EEA350>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:/资料/常用/python/python/day4/Built-in_function6.py', '__cached__': None, 'aa': 'qwe', 'f1': <function f1 at 0x02EAD660>}
{'a': 123}
全局变量、局部变量
# hash()#传入一个对象,他会帮我转换为hash值
s = "qwe"
print(hash(s)) -1262142889 # round() #四舍五入
s = round(5.1125,1)
print(s) 5.1
hash和round
# max、min、sum
s = sum([11, 22, 33])#求和
print(s) s = max([11, 22, 33])#最大值
print(s) s = min([11, 22, 33])#最小值
print(s) 66
33
11
max_min_sum
# zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
l1 = ["ha", 11, 22, 33]
l2 = ["ha", 11, 22, 33]
l3 = ["ha", 11, 22, 33]
r = zip(l1, l2, l3) # 将每一列元素打包成为一个元组,然后在由一个大的列表包括起来
temp = list(r)[0]#显示第0个元素
ret = ' '.join(temp)
print(ret) ha ha ha
zip
装饰器
什么是装饰器:
装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。
装饰器的写法:
def outer(func):
def inner():
print('log')
return func() return inner # 注意这里返回的inner没有(),因为这只是返回一个函数体 # 可以看到我们并没有在f函数里面加入log,但是当我们调用这个函数时,就出现了log
@outer
def f1():
print("F1") @outer
def f2():
print("F2") @outer
def f100():
print("F100") 调用装饰器:
f1() log
F1
装饰器必备的小知识:
def f1():
print(123) def f1():
print(456) f1() # 很明显,这个地方会调用第二个f1,他会输出456 def f1():
print('') def f2(xx):
xx() f2(f1)#在这个地方,f1表示f1函数的整体,相当于我在f2里面调用了f1函数,所以xx是f1,所以输出内容就是123
装饰器的流程分析:
# def outer(func):
# print(123, func) # def outer(func):
# return "111" def outer(func):
def inner():
print("before")
func()#func是传入的f1,所以这里执行f1函数
print("after") return inner # 返回inner相当于返回了这个函数体(整个函数),然后又开始执行inner函数,如果不调用inner,inner将一直放到内存,不会执行 # @ + 函数名
# 功能
# 1、自动执行outer函数并且将下面的函数名f1当作参数传递
# 2、将outer函数的返回值,重复赋值给f1
@outer
def f1():
print("F1") # 新建一个文件用来调用这个业务
import process_analysis1 process_analysis1.f1() 返回结果:
before
F1
after
装饰器修改后(一些比较常用的功能):
def outer(func): # 所以我们可以用到万能参数,无论客户需要传入多少参数,我们就可以响应多少参数
def inner(*args, **kwargs): # 如果原函数里面带了参数,我们这里也需要参数
print("before")
r = func(*args, **kwargs) # 这个地方也需要放入万能参数
print("after")
return r # 返回f1函数原有的返回值 return inner # 返回inner相当于又开始执行inner函数, # @ + 函数名
# 功能
# 1、自动执行outer函数并且将下面的函数名f1当作参数传递
# 2、将outer函数的返回值,重复赋值给f1
@outer
def f1(arg):
print(arg)
return "哈哈" @outer
def f2(a1, a2): # 传入两个参数
print(a1, a2)
return "哈哈" #新建一个文件用于调用此文件
import process_analysis3 ret = process_analysis3.f1("")
print(ret) # 将返回值也跟着输出 process_analysis3.f2(111, 22) before
11
after
哈哈
before
111 22
after
最后更新时间:2017-12-09-31:30:02
python的学习之路day4的更多相关文章
- Python入门学习之路,怎么 “开心,高效,踏实” 地把Python学好?兴趣,兴趣,兴趣!
Python入门学习之路,怎么 “开心,高效,踏实” 地把Python学好?兴趣,兴趣,兴趣!找到你自己感兴趣的点进行切入,并找到兴趣点进行自我驱动是最好的学习方式! 推荐两本书,一本作为 ...
- ql的python学习之路-day4
集合(set) 集合主要有两种用处: 1.去除相同的元素 2.关系测试,两个列表中的元素的关系 按照‘alex’讲的自己写了源码笔记,下面就直接贴出来: #!/usr/bin/env python # ...
- Python学习之路-Day4
1.函数 函数定义 def func(aa): def:表示函数的关键字 func:函数名,即函数的名称,可根据函数名调用函数 print('.....') prin ...
- python 爬虫学习之路
2016-6-18 --今天实现了第一个用urllib2实现的爬虫程序. --过程中发现 req = urllib2.Request(url,headers = headers) 总是报错: 主要原因 ...
- python的学习之路day7-socket网络编程
python基础部分学习完了,时间也已经过了两个月左右,感觉没学到什么,可能是我学习之后忘记的太多了. 由于没钱买书,要是去培训就更没钱了,所以在网上找了一本书,感觉还不错,讲的比较好,比较详细. P ...
- python的学习之路day2
1.什么是常量: 常量在程序中是不变的量 但是在python中所有的变量都可以改 注意:为了防止区分错误,所以python中常量使用大写命名 例如: MYSQL_CONNECTION = '192.1 ...
- Python小白学习之路(二十)—【打开文件的模式二】【文件的其他操作】
打开文件的模式(二) 对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码.图片文件的jgp格 ...
- Python小白学习之路(十五)—【map()函数】【filter()函数】【reduce()函数】
一.map()函数 map()是 Python 内置的高阶函数 有两个参数,第一个是接收一个函数 f(匿名函数或者自定义函数都OK啦):第二个参数是一个 可迭代对象 功能是通过把函数 f 依次作用在 ...
- Python小白学习之路(十)—【函数】【函数返回值】【函数参数】
写在前面: 昨天早睡之后,感觉今天已经恢复了百分之八十的样子 又是活力满满的小伙郭 今日份鸡汤: 我始终相信,在这个世界上,一定有另一个自己,在做着我不敢做的事,在过着我想过的生活.-------宫崎 ...
随机推荐
- Solidity的自定义结构体深入详解
一.结构体定义 结构体,Solidity中的自定义类型.我们可以使用Solidity的关键字struct来进行自定义.结构体内可以包含字符串,整型等基本数据类型,以及数组,映射,结构体等复杂类型.数组 ...
- Spring配置文件引入xml文件: <import resource=" " />标签使用总结
引入其他模块XML 在Spring的配置文件,有时候为了分模块的更加清晰的进行相关实体类的配置. 比如现在有一个job-timer.xml的配置 <?xml version="1.0& ...
- Cglib invoke以及invokeSuper的一点区别
简单记录下,解决的一个问题,Cglib的invoke和invokeSuper的区别: 简而言之,invoke方法调用的对象没有增强过,invokeSuper方法调用的对象已经是增强了的,所以会再走一遍 ...
- ASP.NET MVC5+EF6+LayUI实战教程,通用后台管理系统框架(7)- EF增删改查
前言 上一节创建了实体数据库,这次我们来看看怎么操作这个实体 代码实现 新建一个UserInfoController的控制器:不需要写什么代码,系统自动生成Index方法: 创建IDAL,DAL,IB ...
- 使用node.js的开发框架express创建一个web应用
1.1.1:搭建环境 1.安装Express 按键:Windows+R=>输入cmd,打开命令行,输入 npm install -g express@3 我们需要用全 ...
- Netbeans 8.0配置Python开发环境
1. 菜单栏:工具->插件->设置->添加 配置如下信息: http://deadlock.netbeans.org/hudson/job/nbms-and-javadoc/last ...
- VS2012 扩展和更新里 插件状态 为禁用 的解决办法!
在vs2012 里安装完插件,重启VS,结果 插件没有加载,查看 扩展和更新,里面显示禁用,如图: 解决方法: 点击界面上 “启用每用户扩展的加载” 蓝色文字,弹出如下界面: 选中 以管理员运行时加载 ...
- MVC应用程序使用jQuery接收Url的参数
在这个练习<MVC应用jQuery动态产生数据>http://www.cnblogs.com/insus/p/3410138.html 中,学会了使用jQuery创建url链接,并设置了参 ...
- 撩课-Web大前端每天5道面试题-Day34
1.React 中 keys 的作用是什么? Keys 是 React 用于追踪哪些列表中元素被修改.被添加或者被移除的辅助标识. render () { return ( <ul> {t ...
- Oracle总结之plsql编程(基础九)
原创作品,转自请注明出处:https://www.cnblogs.com/sunshine5683/p/10344302.html 接着上次总结,继续今天的总结,今天主要总结plsql中控制语句,如条 ...