06Python 内置函数redisyagmailnnlog导入模块的实质

Posted momolei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了06Python 内置函数redisyagmailnnlog导入模块的实质相关的知识,希望对你有一定的参考价值。

1 内置函数

1.1 map()和filter()

1 def bl(i):
2     return str(i).zfill(2)
3 l=12333
4 # map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
5 print(type(map(bl,l)))
6 res = list(map(bl,l))  #,结果放到了一个生成器中,需要强制转换成list、set
7 print(res)
#运行结果
<class ‘map‘>
[‘01‘, ‘02‘, ‘03‘, ‘03‘, ‘03‘]

 

1 def bl(i):
2     if i>3:
3         return True
4 l=12345
5 #该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,
6 #最后将返回 True 的输入元素放到新列表中。
7 res = list(filter(bl,l))#Python3.x 返回迭代器对象
8 print(res)
#运行结果
[‘4‘, ‘5‘]

 

1.2 enumerate()

enumerate(sequence, [start=0])
  • sequence -- 一个序列、迭代器或其他支持迭代对象。
  • start -- 下标起始位置。
1 >>> lst = [1,2,3,4]
2 >>> for index,value in enumerate(lst):
3 ...     print(index, value)
4 ...     
5 0 1
6 1 2
7 2 3
8 3 4

例:

 1 import xlwt
 2 book = xlwt.Workbook()
 3 sheet = book.add_sheet(sheet1)
 4 all_data = [
 5     [id,name,sex,phone,country],
 6     [1,xiaoming,,123423432,china],
 7     [2,xiaoming,,123423432,china],
 8     [3,xiaoming,,123423432,china],
 9     [4,xiaoming,,123423432,china],
10     [5,xiaoming,,123423432,china],
11     [6,xiaoming,,123423432,china],
12 ]
13 # enumerate参数为可遍历/可迭代的对象(如列表、字符串)
14 # enumerate多用于在for循环中得到计数,利用它可以同时获得索引和值,即需要index和value值的时候可以使用
15 for i, data in enumerate(all_data):
16     for j, d in enumerate(data):
17         sheet.write(i,j,d)
18 book.save(stu.xls)

 

1.3 其他内置函数

 1 input()#输入
 2 type()#返回值类型
 3 len()#返回对象(字符、列表、元组等)长度或项目个数
 4 print()#打印
 5 list()#类型转换
 6 dict()#类型转换
 7 tuple()#类型转换
 8 set()#类型转换
 9 str()#类型转换
10 int()#类型转换
11 float()#类型转换
12 bool()#非空即真,非零即真
 1 print(max([1,2,3,4,7,8,9]))#最大值
 2 print(min(1,2,3,4,7,8,9))#最小值
 3 print(round(3.1323432,2)) #取几位小数
 4 # sort 与 sorted 区别:
 5 # sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
 6 # list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
 7 sorted([5,6,7,343])#返回重新排序的列表,默认为升序
 8 s=1223423423
 9 print(sorted(s,reverse=True))#返回重新排序的列表,reverse = True 降序
10 print(ord(a))#字母转成ascii码表里面的值
11 print(chr(97))#把数字转成ascii码表里面的字母
12 res1 = any([1,1,0]) #如果这个list里面有一个为真,就返回true
13 res2 = all([1,1,1,1,1]) #如果这个list里面全部为真,就返回true
14 print(res1,res2)

运行结果:

9
1
3.13
[‘4‘, ‘4‘, ‘3‘, ‘3‘, ‘3‘, ‘2‘, ‘2‘, ‘2‘, ‘2‘, ‘1‘]
97
a
True True

 

 1 import hashlib
 2 print(dir(hashlib))#返回当前范围内的变量、方法和定义的类型列表
 3 m = hashlib.md5(abcd.encode())
 4 print(dir(m))#返回当前范围内的变量、方法和定义的类型列表
 5 print(m.hexdigest())
 6 f = open(a.txt).read()
 7 print(type(f))
 8 res = eval(f) #执行简单的python代码,执行的是python表达式
 9 print(res)
10 print(type(res))
11 my_code= ‘‘‘
12 def my():
13     print(‘运行my,xioaojun‘)
14 my()
15 ‘‘‘
16 exec(my_code) #执行一段python代码

运行结果:

[‘__all__‘, ‘__builtin_constructor_cache‘, ‘__builtins__‘, ‘__cached__‘, ‘__doc__‘, ‘__file__‘, ‘__get_builtin_constructor‘, ‘__loader__‘, ‘__name__‘, ‘__package__‘, ‘__spec__‘, ‘_hashlib‘, ‘algorithms_available‘, ‘algorithms_guaranteed‘, ‘blake2b‘, ‘blake2s‘, ‘md5‘, ‘new‘, ‘pbkdf2_hmac‘, ‘sha1‘, ‘sha224‘, ‘sha256‘, ‘sha384‘, ‘sha3_224‘, ‘sha3_256‘, ‘sha3_384‘, ‘sha3_512‘, ‘sha512‘, ‘shake_128‘, ‘shake_256‘]
[‘__class__‘, ‘__delattr__‘, ‘__dir__‘, ‘__doc__‘, ‘__eq__‘, ‘__format__‘, ‘__ge__‘, ‘__getattribute__‘, ‘__gt__‘, ‘__hash__‘, ‘__init__‘, ‘__init_subclass__‘, ‘__le__‘, ‘__lt__‘, ‘__ne__‘, ‘__new__‘, ‘__reduce__‘, ‘__reduce_ex__‘, ‘__repr__‘, ‘__setattr__‘, ‘__sizeof__‘, ‘__str__‘, ‘__subclasshook__‘, ‘block_size‘, ‘copy‘, ‘digest‘, ‘digest_size‘, ‘hexdigest‘, ‘name‘, ‘update‘]
e2fc714c4727ee9395f324cd2e7f331f
<class ‘str‘>
{‘username‘: ‘abc‘, ‘password‘: 12345}
<class ‘dict‘>
运行my,xioaojun

 

2 redis模块

redis模块为第三方模块,需要安装:pip3 install redis

  • 关系型数据库:数据存在磁盘上,使用sql语句来操作数据,表与表之间有关系
  • 非关系型数据库:{‘key‘:‘value‘} 键对

    mongodb:数据存在磁盘上

    redis:数据存在内存上

2.1 连接redis

1 import redis
2 
3 ip = 1*.*.*.*0
4 password=HK139bc&*
5 
6 r = redis.Redis(host=ip,password=password,port=6379,db=1,
7                 decode_responses=True)
8                 # decode_responses这个参数的意思是,返回的二进制数据直接decode一下,即将bytes类型改为默认utf-8,不加这个查询返回的是二进制类型,比如b‘12345‘

2.2 string类型

 1 #所存数据类型为string,一个key,一个value
 2 #
 3 res = r.get(nhy2)
 4 r.get(python:lyos)
 5 
 6 #增、改
 7 r.set(nhy,acb123,60) #新增和修改都是它,60秒失效
 8 r.set(python:os,listdir,path)#文件夹python下的键os,冒号前是文件夹
 9 
10 #
11 r.delete(nhy) #删除指定的key
12 r.flushdb()#清空数据库里的所有key
1 print(r.keys())#获取到所有的key
2 print(r.keys(niu*))#查出所有以niu开头的key
3 print(r.get(lynn))#get一个不存在的key,返回none
4 
5 r.set(双子座zy:zy:01,多层文件夹)
6 
7 for k in r.keys:#循环遍历所有的key,然后删除
8     r.delete(k)
#运行结果
[‘python:os‘, ‘双子座zy:zy:01‘]
[‘python:os‘]
None

 

2.3 hash类型

哈希类型类似于下面这些二层字典

session = {
"nhy":{‘sex‘:18,‘age‘:18},
"nhy2":{‘sex‘:18,‘age‘:18},
}
token = {
"nhy2":{‘x‘:‘x‘}
}

 技术分享图片

1 r.hset(jnz_stus,yangfan,sdfsdfsdfsdf)#外面的key, 里面的key,值
2 res = r.hget(jnz_stus,yangfan) #指定获取里面小key的值
3 print(res)
4 
5 res = r.hgetall(jnz_stus) #获取到大key里面所有的数据
6 print(res)
7 
8 r.delete(jnz_stus)  #删除大key
9 r.hdel(jnz_stus,cm) #删除指定的小key
#执行结果
sdfsdfsdfsdf
{‘yangfan‘: ‘sdfsdfsdfsdf‘, ‘cm‘: ‘hahahah‘}

  

2.4 数据失效

1 r.expire(aaa,100)#设置key失效时间,不管是string还是hash都可使用
2 print(r.ttl(jd))#获取key还有多久失效

 

2.5  decode_responses参数

 1 import redis
 2 ip = *.*.*.*0
 3 password=HK139bc&*
 4 r = redis.Redis(host=ip,password=password,port=6379,db=1,)
 5 #未加decode_responses参数
 6 
 7 res = r.hgetall(jnz_stus) #获取到大key里面所有的数据
 8 # 1、先循环res
 9 # 2、k和v decode一下 然后放到new这个字典里面
10 new = {}
11 for k,v in res.items():
12     print(k,v)
13     new [k.decode()] = v.decode()
14 print(======下面是转完之后的)
15 print(new)

 

#decode_responses未设置时运行结果
b‘yangfan‘ b‘sdfsdfsdfsdf‘
b‘cm‘ b‘hahahah‘
======下面是转完之后的
{‘yangfan‘: ‘sdfsdfsdfsdf‘, ‘cm‘: ‘hahahah‘}

 

3 yagmail模块

 1 import yagmail
 2 
 3 user=u***[email protected]
 4 password=h***3#163、qq邮箱为授权码,一般公司邮箱是登录密码
 5 
 6 m = yagmail.SMTP(host=smtp.163.com,user=user,
 7                  password=password,
 8                  )
 9 # port=465,  #可以不写port,默认465
10 #smtp_ssl=True 如果是qq邮箱的话加这个参数
11 #如果是单个收件人,直接写string即可,如果是多个写成list
12 m.send(to=5*****[email protected],
13        cc=[1*****[email protected],1*****[email protected]],
14        subject=明天不上课,contents=明天不上课,在家好好休息。。。,
15        attachments=[笔记.txt,rC:Userszhanglei06DocumentsTencent Files365006014FileRecvday7内置函数.py])
16 #附件,多个用逗号隔开,放在list里

默认的yagmail可能会造成附件的中文名乱码

 

4 nnlog模块 

nnlog事对logging写日志操作进行了封装,使用起来更方便。该模块是第三方模块,需要先安装并导入

 1 #日志级别如下:
 2 # error
 3 # waring
 4 # info
 5 # debug
 6 import nnlog
 7 log = nnlog.Logger(my.log,level=info,backCount=5,when=D)
 8 # file_name是日志文件名
 9 # level是日志级别,如果不传的话默认是debug级别
10 # when是日志文件多久生成一个,默认是按天,S 秒、M 分、 H 小时、 D 天、 W 每星期
11 # backCount是备份几个日志文件,默认保留5天的
12 # interval是间隔多久生成一个日志文件,默认是1天
13 log.info(xiaojun登陆...)
14 log.error(数据连接失败!)
15 log.surprise()

 

5 导入模块

  • 导入模块的顺序
1、先从当前目录下找这个模块
2、再去环境变量里面找

 1 import sys 2 print(sys.path) #查看环境变量 
#查看结果
[‘D:\\Program Files\\PyCharm Community Edition 2016.1.2\\helpers\\pydev‘, ‘D:\\Program Files\\PyCharm Community Edition 2016.1.2\\helpers\\pydev‘, ‘C:\\Users\\tyourai\\AppData\\Local\\Programs\\Python\\Python36\\python36.zip‘, ‘C:\\Users\\tyourai\\AppData\\Local\\Programs\\Python\\Python36\\DLLs‘, ‘C:\\Users\\tyourai\\AppData\\Local\\Programs\\Python\\Python36\\lib‘, ‘C:\\Users\\tyourai\\AppData\\Local\\Programs\\Python\\Python36‘, ‘C:\\Users\\tyourai\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages‘, ‘C:\\Users\\tyourai\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages\\pymysql-0.9.2-py3.6.egg‘, ‘E:\\PycharmProjects\\test‘]

  pycharm可以将目录设置到环境变量里


  • 导入的模块的实质
就是把导入的这个python文件运行一次

 

以上是关于06Python 内置函数redisyagmailnnlog导入模块的实质的主要内容,如果未能解决你的问题,请参考以下文章

为啥内置的python sum 函数会这样?

09-06 反射内置方法

09-06 反射内置方法

python-day3-内置函数与字符字节之间的转换

兄弟连学Python(06)---- 函数

学习python的第十七天(二分法,有名函数,匿名函数,内置函数)