【06】Python 内置函数、redis、yagmail、nnlog、导入模块的实质

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‘,r‘C:\Users\zhanglei06\Documents\Tencent Files\365006014\FileRecv\day7\内置函数.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文件运行一次

原文地址:https://www.cnblogs.com/momolei/p/9790804.html

时间: 2024-10-03 13:39:52

【06】Python 内置函数、redis、yagmail、nnlog、导入模块的实质的相关文章

Python内置函数_数学运算类

本文和大家分享的主要是python内置函数数据运算类相关内容,一起来看看吧,希望对大家学习python 有所帮助. abs abs(x) 求绝对值 · X可以是整型,也可以是复数 · 若X是复数,则返回复数的模 >>> abs(-1)1>>> abs(-3+4j)5.0>>> bin bin(x) 将整数x转换为二进制字符串 >>> bin(2)'0b10'>>> bin(3)'0b11' bool bool([x]

Python内置函数进制转换的用法

使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x)Convert an integer number to a binary string. The result is a valid Python expression. If x is not a Python int object, it has to define an __index__() method that returns a

Python补充--Python内置函数清单

Python内置函数 Python内置(built-in)函数随着python解释器的运行而创建.在Python的程序中,你可以随时调用这些函数,不需要定义.最常见的内置函数是: print("Hello World!") 在Python教程中,我们已经提到下面一些内置函数:基本数据类型 type()反过头来看看 dir()   help()    len()词典 len()文本文件的输入输出 open()循环设计 range()   enumerate()    zip()循环对象

python基础9 -----python内置函数

python内置函数1 一.python内所有的内置函数: 二.python内常用的内置函数: 三.python内内置函数详解: 1.数学运算函数: 2.集合类函数: 3.逻辑类函数: 4.映射类函数: 5.IO操作:

Python 内置函数sorted()有哪些高级用法?

本文和大家分享的主要是python内置函数sorted()的相关内容,一起来看看吧,希望对大家学习python http://www.maiziedu.com/land/python/有所帮助. 1.对于 Python 内置函数 sorted() ,先拿来跟list(列表)中的成员函数 list.sort() 进行下对比.在本质上,list的排序和内建函数sorted的排序是差不多的,连参数都基本上是一样的. 2.主要的区别在于, list.sort() 是对已经存在的列表进行操作,进而可以改变

[python基础知识]python内置函数map/reduce/filter

python内置函数map/reduce/filter 这三个函数用的顺手了,很cool. filter()函数:filter函数相当于过滤,调用一个bool_func(只返回bool类型数据的方法)来迭代遍历每个序列中的元素. 返回bool_func结果为true的元素的序列(注意弄清楚序列是什么意思)http://blog.csdn.net/bolike/article/details/19997465序列参考</a> 如果filter参数值为None,list参数中所有为假的元 素都将被

lambda 表达式+python内置函数

#函数 def f1(a,b): retrun  a+b #lambda方式,形参(a,b):返回值(a+b) f2=lambda a,b : a+b 在一些比较简单的过程计算就可以用lambda python内置函数 abc 获取绝对值 all 循环对象,都为真就返回真否则为假 >>> li[1, 2, 3]>>> all(li)True #0为假 >>> li=[0,1,2,3]>>> all(li)False bool 真假判断

python内置函数(三)

python内置函数目前需要知道的如下: 代码: #!/usr/bin/env python# -*- coding:utf-8 -*-# author by lh #map(函数,可迭代的对象)def f1(x): return x+100ret=map(f1,[1,2,3,4,5])for i in ret: print iprint '---------------------------------------'#hash转换成哈希值,节约内存dic={ 'dvfhsuicbfhascj

python学习系列--python内置函数(一)

先列出所有的python内置函数,可以看到还是挺多的. abs()        求给定数的绝对值. all()          传入一个列表,只有当列表中所有元素都是真时,该函数返回真. any()        传入一个列表,只要列表中有一个元素为真,该函数即返回真. ascii()       执行对象中的__repr__方法.该函数在python2.7中已弃用. bin()         将给定的值转换成二进制. bool()       判断真假. bytearray()     

Python基础篇【第2篇】: Python内置函数--map/reduce/filter/sorted

Python内置函数 lambda lambda表达式相当于函数体为单个return语句的普通函数的匿名函数.请注意,lambda语法并没有使用return关键字.开发者可以在任何可以使用函数引用的位置使用lambda表达式.在开发者想要使用一个简单函数作为参数或者返回值时,使用lambda表达式是很方便的.总结:处理简单逻辑,自动返回结果 语法格式: lambda parameters: expression 就相当于 def fun(args) return expression 并且lam