第5课:内置函数、处理json、常用模块
1. 内置函数
1)常用的内置函数
print(all([0, 2, 3, 4])) # False,判断可迭代的对象里面的值是否都为真
print(any([0, 1, 2, 3, 4])) # True 判断可迭代的对象里面的值是否有一个为真
print(bin(100), type(bin(100))) # 0b1100100 <class 'str'> 十进制转二进制,二进制前有0b,如果想去掉,用如下方法:
ejz = bin(100)
print(ejz.replace('0b', ''), type(ejz.replace('0b', ''))) # 1100100 <class 'str'>
print(bool('s')) # 把一个对象转换成布尔类型
print(bytearray('abcde', encoding='utf-8')) # 把字符串变成一个可修改的bytes,什么情况下会用到呢???
'''
print(callable('aa'))
# 1. 判断传入的对象是否可被调用,可被调用是指能否使用()(括号)的方法调用
# 2. 可调用对象,在实际调用也可能调用失败;但是不可调用对象,调用肯定不成功。
# 3. 类对象都是可被调用对象,类的实例对象是否可调用对象,取决于类是否定义了__call__方法。
# >>> callable(1)
# False
# >>> 1()
# Traceback (most recent call last):
# File "<pyshell#5>", line 1, in <module>
# 1()
# TypeError: 'int' object is not callable
# >>> class A: # 定义类A
# pass
#
# >>> callable(A) # 类A是可调用对象
# True
# >>> a = A() # 调用类A
# >>> callable(a) # 实例a不可调用
# False
# >>> a() # 调用实例a失败
# Traceback(most recent call last): File "<pyshell#31>", line 1, in < module > a()
# TypeError: 'A'
# object is not callable
#
# >>> class B: # 定义类B
# def __call__(self):
# print('instances are callable now.')
# >>> callable(B) # 类B是可调用对象
# True
# >>> b = B() # 调用类B
# >>> callable(b) # 实例b是可调用对象
# True
# >>> b() # 调用实例b成功
# instances are callable now.
''' print(chr(65)) # A 打印数字对应的ascii
print(ord('A')) # 65 打印字符对应的ascii码
print(dict(a=1, b=2)) # {'a': 1, 'b': 2} 转换字典
print(dir(1)) # 打印传入对象的可调用方法 ,一般只看不带__的方法,或属性 # print(eval('[]')) # 执行python代码,只能执行简单的运算
# code = '1+1'
# print(eval(code))
# print(exec('def a():pass')) # 执行python代码 code = '''
def a():
print('aa')
a()'''
print(exec(code)) # 结果中有None是因为exec(code)没有返回值,所以输出None
# 结果是
# aa
# None
'''
# zip() # 把可迭代对象(如list)结合在一起,以短的list为准
ids = [1, 2, 3, 4]
names = ['小黑', '小白', '小黄']
# for idd, name in ids, names: # 这种写法会报错
for idd, name in zip(ids, names):
print(idd, name)
结果:
1 小黑
2 小白
3 小黄 print(map(lambda x: x > 5, [1, 2, 3, 4, 5, 6]))
# map:循环调用函数,处理结果保存在map对象中,可以用list(map对象)查看返回结果
# 使用map高级些
# 同样的功能,代码越少越牛逼
def func(a):
if a % 2 == 0:
return a
# return True
else:
return False
# return True [0, True, 2, True, 4, True, 6, True, 8, True, 10]
nums = [x for x in range(11)]
res = map(func, nums) # 参数只有这两个
print(list(res))
# 等价于
all_res = []
for num in nums:
res = func(num)
all_res.append(res) print(filter(lambda x: x > 5, [12, 3, 12, 2, 1, 2, 35])) # 把后面的迭代对象根据前面的方法筛选
# filter:循环调用函数,只保存返回结果为真的
res = filter(func, nums)
# print(list(res)) # return a时,[2, 4, 6, 8, 10] 没有0,是因为return 0 ,0也是假,所以未返回
print(list(res)) # return b时,[0, 2, 4, 6, 8, 10]
''' print(frozenset({1, 2, 3, 3})) # 定义一个不可修改的集合
print(globals()) # 返回程序内所有的全局变量,返回的是一个字典
print(locals()) # 返回局部变量
print(hash('aaa')) # 把一个字符串哈希成一个数字
print(hex(111)) # 0x6f 数字转成16进制
print(max(111, 12)) # 111 取最大值
print(oct(111)) # 0o157 把数字转换成8进制
print(round(11.111111, 2)) # 11.11 取几位小数
print(format(11.11111, '0.2f')) # 11.11
print(sorted([2, 31, 34, 6, 1, 23, 4], reverse=True)) # 排序,默认升序,把reverse的值赋为True,降序排列 '''
# 函数如果有多个return值,那么会把这几个return的值都放到一个元组里面,然后返回
def hello(a, b, c, d):
return a, b, c, d
print(hello('1', '2', '3', '4')) # ('1', '2', '3', '4') # 列表推导式
nums = [0, 1, 2, 3, 4]
new_nums = [str(x) for x in nums]
print(new_nums) # ['0', '1', '2', '3', '4']
'''
2. 处理json
# json:一种通用的数据类型
import json
d = {
'car': {'color': 'red', 'price': 100, 'count': 50},
'挨粪叉': {'color': 'red', 'price': 100, 'count': 50},
'挨粪叉1': {'color': 'red', 'price': 100, 'count': 50},
'挨粪叉2': {'color': 'red', 'price': 100, 'count': 50},
'挨粪叉3': {'color': 'red', 'price': 100, 'count': 50},
'挨粪叉4': {'color': 'red', 'price': 100, 'count': 50},
}
# json.dumps()将list dict转化为json串
res = json.dumps(d, indent=4, ensure_ascii=False)
# fi = open('f.txt', 'w', encoding='utf-8')
# fi.write(res)
# json文件中必须用"",不能用'',否则会报错 # f1 = open('f.txt', 'w', encoding='utf-8')
# 自动将json串写入文件中
# json.dump(d, f1, indent=4, ensure_ascii=False) f1 = open('f.txt', encoding='utf-8')
# 自动将从文件读取的json串转化为python对象
res = json.load(f1)
print(res, type(res))
3. 模块
1) 常用模块
import os
# .代表当前路径,..代表上一级路径
# print(os.getcwd()) # 获取当前工作目录#
# os.chmod("/usr/local", 7) # 给文件/目录加权限
# print(os.chdir("../")) # 更改当前目录
# print(os.curdir) # 当前目录
# print(os.pardir) # 父目录
# print(os.makedirs("/usr/hehe/hehe1")) # 递归创建文件夹,父目录不存在时创建父目录
# print(os.removedirs("/usr/hehe/hehe1")) # 递归删除空目录
# print(os.mkdir("test1")) # 创建文件夹
# print(os.rmdir("test1")) # 删除指定的空文件夹
# print(os.remove("test")) # 删除文件
# print(os.listdir('.')) # 列出一个目录下的所有文件
# os.rename("test", "test1") # 重命名
# print(os.stat("笔记")) # 获取文件信息
# print(os.sep) # 当前操作系统的路径分隔符
# print(os.linesep) # 当前操作系统的换行符
# print(os.pathsep) # 当前系统的环境变量中每个路径的分隔符,linux是:,windows是;
# print(os.environ) # 当前系统的环境变量
# print(os.name) # 当前系统名称
# print(__file__) # 获取当前文件的绝对路径 D:/PyCharmWorkspace/bcClassExercises/day5/常用模块.py
# print(os.path.abspath(__file__)) # 获取绝对路径 D:\PyCharmWorkspace\bcClassExercises\day5\常用模块.py
# print(os.path.split("/usr/hehe/hehe.txt")) # 分割路径和文件名 ('/usr/hehe', 'hehe.txt')
# print(os.path.split(r'D:\haha\1.txt')) # ('D:\\haha', '1.txt')
# print(os.path.dirname("/usr/local")) # 获取父目录
# print(os.path.basename("/usr/local")) # 获取最后一级,如果是文件显示文件名,如果是目录显示目录名
# print(os.path.exists("/usr/local")) # 判断目录/文件是否存在
# print(os.path.isabs(".")) # 判断是否是绝对路径
# print(os.path.isfile("/usr/local")) # 判断是否是一个文件
# print(os.path.isdir("/usr/local")) # 是否是一个路径
# print(os.path.join(r"\root", 'hehe', 'a.sql')) # 拼接为一个路径(自动加上\),拼的个数没有限制
# os.system('notepad') # 执行系统命令 # print(os.path.getatime("len_os.py")) # 输出最近访问时间
# print(os.path.getmtime("len_os.py")) # 输出最近访问时间 # os.popen('cmd') 返回的是文件的对象(默认模式r,还可以是w),对其进行读取read()就可以看到输出内容了
# res = os.popen('ipconfig').read() # 执行系统命令,并获取返回结果
# print(res)
# import sys
# print(sys.platform) # 查看当前系统是什么 windows的话都是打印win32
# print(sys.version) # 查看python的版本
# # 获取运行Python文件时,传入的参数
# print(sys.argv) # 命令行参数List,第一个元素是程序本身路径 # sys.exit(n) # 退出程序,正常退出时exit(0)
# quit("程序退出")
# sys.version # 获取Python解释程序的版本信息
# sys.maxint # 最大的Int值
# sys.path # 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
# sys.platform # 返回操作系统平台名称
# sys.stdout.write('please:') # 向屏幕输出一句话
# val = sys.stdin.readline()[:-1] # 获取输入的值
2) 时间模块
import time
# time.sleep(1) # 等待几秒
# 1. 格式化好的时间 2018-1-14 16:42
# 2. 时间戳,是从unix元年到现在的所有秒数
# print(int(time.time())) # 当前时间戳
# cur_time = time.strftime('%Y:%m:%d %H:%M:%S') # 获取当前时间的格式化时间字符串
# print(cur_time)
#
#
# print(time.gmtime()) # # 默认获取标准时区的时间元组,如果传入了一个时间戳,那么把这个时间戳转化为时间元组
# print(time.gmtime(1516005840)) # 取的标准时区
# print(time.timezone) # 和标准时间相差了几个小时
# print(time.localtime()) # 默认获取当前时区的时间元组,如果传入一个时间戳,那么把这个时间戳转化为时间元组
#
res = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(1515686400))
print(res) # 把格式化好的时间转化为时间戳
t = time.strptime('20180112', '%Y%m%d') # 将参数string按第二个参数format解析为时间元组
print(time.mktime(t)) # 将时间元组转化为时间戳 # 一天的秒数:86400s
# 32342 + 86400*3 or 32342 - 86400*3
# 通过时间戳的加减可以获取几天前几天后的时间
3) 随机数模块
import random
import string
'''
print(type(string.digits)) # 所有的数字0-9 字符串类型
print(string.ascii_lowercase) # 所有的小写字母
print(string.ascii_uppercase) # 所有的大写字母
print(string.ascii_letters) # 所有的大写字母和小写字母
print(string.punctuation) # 所有的特殊字符 print(random.randint(1, 999)) # 1-999随机取一个整数
print(random.choice(['1', '2', '3', '4'])) # 随机取一个元素,参数是可迭代对象
res = random.sample(string.digits, 3)
print(res)
print(''.join(res))
'''
# 回头查查资料,数字的格式化输出
# random.uniform(1, 9)
res = format(random.uniform(1, 9), '.2f') # 取随机小数
# res = random.uniform(1, 9) # 取随机小数
print(res)
'''
# 5.03203 保留几位小数,四舍五入,如果四舍五入后最后一位小数为0,不显示
# 1.9027236450716112
# 1.9
print(round(res, 2))
print(random.random()) # 取0-1之间的随机小数 s = ['a', 'b', 'c', 'd']
random.shuffle(s) # 洗牌,打乱顺序,参数必须为list
print(s)
'''
4) 加密模块
import hashlib
# md5
pwd = 'b'
m = hashlib.md5() # 新建一个md5对象
# print(dir(m)) # 打印对象所有的属性和方法
pwd.encode() # 将字符串转成bytes类型
m.update(pwd.encode()) # update() 加密,不能传字符串,只能传二进制bytes类型
print(m.hexdigest()) # 加密后的结果 def md5_passwd(st:str): # 限定入参类型,只能是string类型
bytess = st.encode()
m = hashlib.md5(bytess)
return m.hexdigest()
res = md5_passwd('1')
print(res) # md5加密是不可逆的,不能被解密的。
# MD5 md5AF
# 123456 f0dfb4c968
# 撞库 # 另外一种加密方式
sha_256 = hashlib.sha3_256() import base64
# base64
s = 'hahaha'
bytes_s = s.encode()
res = base64.b64encode(bytes_s)
print(res)
print(res.decode()) # 把bytes类型转成字符串 jie_mi_res = base64.b64decode(res)
print(jie_mi_res.decode())
第5课:内置函数、处理json、常用模块的更多相关文章
- Python装饰器、生成器、内置函数、json
这周学习了装饰器和生成器,写下博客,记录一下装饰器和生成器相关的内容. 一.装饰器 装饰器,这个器就是函数的意思,连起来,就是装饰函数,装饰器本身也是一个函数,它的作用是用来给其他函数添加新功能,比如 ...
- python学习笔记(五):装饰器、生成器、内置函数、json
一.装饰器 装饰器,这个器就是函数的意思,连起来,就是装饰函数,装饰器本身也是一个函数,它的作用是用来给其他函数添加新功能,比如说,我以前写了很多代码,系统已经上线了,但是性能比较不好,现在想把程序里 ...
- python笔记5:装饰器、内置函数、json
装饰器 装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象. 先看简单例子: def run(): time.sleep(1 ...
- python之装饰器、生成器、内置函数、JSON
一.装饰器: 装饰器,器在这里的意思是函数,也就是装饰函数.作用是给其他函数添加新功能,它可以不改变原有的函数,原来的函数和原来一模一样,什么都不需要改变,只需要在函数外部加上调用哪个装饰器就可以了, ...
- Python3基础(4)匿名函数、装饰器、生成器、迭代器、内置函数、json&pickle序列化、软件目录开发规范、不同目录间模块调用
---------------个人学习笔记--------------- ----------------本文作者吴疆-------------- ------点击此处链接至博客园原文------ 1 ...
- python学习笔记(四):生成器、内置函数、json
一.生成器 生成器是什么?其实和list差不多,只不过list生成的时候数据已经在内存里面了,而生成器中生成的数据是当被调用时才生成呢,这样就节省了内存空间. 1. 列表生成式,在第二篇博客里面我写了 ...
- 内置函数 hashlib configparser logging 模块 C/S B/S架构
1.内置函数 # 内置的方法有很多 # 不一定全都在object中 # class Classes: # def __init__(self,name): # self.name = name # s ...
- python基础-匿名函数、内置函数、正则表达式、模块
1. 匿名函数 1.1 有名函数 有名函数:定义了一个函数名,函数名指向内存地址:通过函数名进行访问.函数名加括号就可以运行有名函数,例如:func() def func(x, y, z = 1): ...
- Day05:装饰器,三元表达式,函数的递归,匿名/内置函数,迭代器,模块,开发目录
上节课复习:1.函数的对象 函数可以被当作数据取处理2.函数嵌套 嵌套调用:在调用一个函数时,函数体代码又调用了其他函数 嵌套定义:在一个函数内部又定义了另一个函数 def foo( ...
- python语言(四)关键字参数、内置函数、导入第三方模块、OS模块、时间模块
一.可变参数 定义函数时,有时候我们不确定调用的时候会传递多少个参数(不传参也可以).此时,可用包裹(packing)位置参数(*args),或者包裹关键字参数(**kwargs),来进行参数传递,会 ...
随机推荐
- jqgrid动态填充select
前两天使用jquery动态填充jqgrid的select,默认随便用一个dict填充(初始化页面是会替换掉),用着可以,后来发现当行数增多,回到以前行继续编辑发现select又变成了那个用来避免报错随 ...
- 照着官网来安装openstack pike之安装dashboard
上文提到了利用命令行下使用openstack的命令来创建虚拟机,这里选择安装dashboard来安装基于web界面的openstack平台 利用dashboard界面来创建虚拟机 dashboard这 ...
- Jquery13 Ajax 进阶
学习要点: 1.加载请求 2.错误处理 3.请求全局事件 4.JSON 和 JSONP 5.jqXHR 对象 一.加载请求 在 Ajax 异步发送请求时,遇到网速较慢的情况,就会出现请求时间较长的问题 ...
- Sqoop相关
# sqoop安装 1. 常规步骤(安装在一台节点上即可) 由于sqoop2配置相对比较麻烦,此次使用的是sqoop1进行演示. 上传sqoop-1.4.4.bin_hadoop-2.0.4-alph ...
- 4.9版本的linux内核中eeprom存储芯片at24c512的驱动源码在哪里
答:drivers/misc/eeprom/at24.c,内核配置项为CONFIG_EEPROM_AT24 Location: -> Device Drivers -> Misc devi ...
- visual studio中添加existing web site, website名字附带数字
用visual studio直接运行website项目 发现有一个conifg文件的配置,路径是solution同级目录下的.vs/config文件夹下有一个applicationhost.confi ...
- OAuth中client id的处理
http://www.tugberkugurlu.com/archive/simple-oauth-server-implementing-a-simple-oauth-server-with-kat ...
- UVA 1642 Magical GCD(经典gcd)
题意:给你n(n<=100000)个正整数,求一个连续子序列使序列的所有元素的最大公约数与个数乘积最大 题解:我们知道一个原理就是对于n+1个数与n个数的最大公约数要么相等,要么减小并且减小至少 ...
- UVa 11396 爪分解(二分图判定)
https://vjudge.net/problem/UVA-11396 题意: 给出n个结点的简单无向图,每个点的度数均为3.你的任务是判断能否把它分解成若干爪.每条边必须属于一个爪,但同一个点可以 ...
- Warsaw U Contest Petrozavo dsk Summer 2011 Training Camp, Monday, September 5, 2011
Warsaw U Contest Petrozavo dsk Summer 2011 Training Camp, Monday, September 5, 2011 Problem A.Chocol ...