python05篇 json和函数
一、json
json就是一个字符串,只不过是所有语言能解析这个字符串。
1.1 把python的数据类型转为json
import json
d = {'name': 'xiaohei', 'cars': [1, 2, 3], 'house': (4, 5, 6), 'addr': '北京'}
# json就是一个字符串,只不过是所有语言能解析这个字符串
result = json.dumps(d) # 把python 的数据类型转json (list、tuple、dict)
result2 = json.dumps(d, ensure_ascii=False, indent=4) # ensure_ascii:False会把带中文的显示出来 indent:可以加上缩进,更好识别去看
print(result2, type(result2)) # json.dump() # 将字典转成json,并写入文件中
with open('word.txt','w', encoding='utf-8') as fw:
json.dump(d, fw, indent=4, ensure_ascii=False)
1.2 把json转为python的数据类型
import json
# 把json转成 python 的数据类型(list、tuple、dict)
json_str = '{"name": "xiaohei", "cars": [1, 2, 3], "house": [4, 5, 6],"addr":"\u5317\u4eac"}'
dict2 = json.loads(json_str)
print(dict2) # json.load()先读取文件内容,再将json转成字典
with open('word.txt', encoding='utf-8') as fr:
d2 = json.load(fr)
二、函数
2.1 函数的定义
# 函数、方法
import string
import datetime
def hello(): # 定义函数,提高代码的复用性
print('hello') hello() # 函数调用 函数名() def baoshi():
print('now :', datetime.datetime.today())
# 函数返回值
# 函数没有写返回值时,默认返回None
# return:
# 1、返回数据
# 2、函数里只要遇到return 函数立马执行结束
def check_password(password): # 参数,位置参数 这里的参数叫做形参
password_set = set(password)
if password_set & set(string.digits) and password_set & set(string.ascii_uppercase) \
and password_set & set(string.ascii_lowercase):
return True
else:
return False
password_result = check_password('12312321') # 这里传的参数叫做实参
print(password_result)
baoshi()
2.2 函数的参数
import string
import datetime def baoshi(): # 无参
print('now :', datetime.datetime.today()) def check_password(password): # 必填参数,位置参数
pass def op_file(file_name,content = None): # 如果传参取传参的值,没传取默认值
pass
if content:
write_file(file_name, content)
else:
result = read_file(file_name)
return result
print(op_file('2.txt'))
op_file('2.txt', 'slskfslls两节课')
# 可选参数,它不是必传的,不限制参数个数,它是把参数放到了一个list中
def send(*args):
for p in args:
print('发短信给xxx%s' % p)
send()
send(110)
send(110, 112, 119)
# 关键字参数,它不是必传的,不限制参数个数.它是把参数放到了一个字典里面
# 传参必须是关键字的方式,key=value
def send_sms(**kwargs):
print(kwargs)
send_sms()
send_sms(xiaolan = '晚上好')
send_sms(xiaobai='新年好', xiaohei='生日快乐', xiaozi='')
# 四种参数都用上的顺序:1.必填参数 2. 默认值参数 3. 参数组 4. 关键字参数
def dc_func(name,age,country='China',sex='女',*agrs,**kwargs):
pass
# name = 'xh' age=18 country = 'abc' sex = 'efg' ('hhh',)传参给参数组 names=1, b=2, c=3 作为字典{'names': 1, 'b': 2, 'c': 3}传参给关键字参数
dc_func('xh', 18, 'abc', 'efg', 'hhh',names=1, b=2, c=3)
# name = 'xh' age=18 country = 'abc' sex = 'efg' ('hhh','2335','23532')传参给参数组
dc_func('xh', 18, 'japan', 'nan', 'abc', 'efg', 'hhh', '2335', '23532') def hhh(name, age, sex):
print(name)
print(age)
print(sex)
l = ['xh', 18, 'nan']
hhh(*l) # 拆包传参,但是参数个数要对应上,不能多
d = {'name': 'xiaohei', 'age': 18, 'sex': 'nam'}
hhh(**d) # 字典的key与函数中的参数名称一致的情况下,可以这么传参
2.3 函数的返回
# 如果一个函数没有返回值的,返回None
def test():
print('hello')
# 如果一个函数返回值是多个的,返回的是元组,也可以用多个参数接受返回值(拆包)
def test2():
return 1, 2, 3
print(test())
a, b, c = test2() # 也可以用多个参数接受返回值(拆包)
print(test2())
# 全局变量:一般定义在代码的最上面,大家都可以用,是公共的变量。全局变量一直占用内存
# 局部变量:在函数里面定义的变量,都是局部变量.函数中优先找函数内部的变量,没有再去找全局变量
# 函数中的变量的作用域是在函数内,局部变量在函数调用完后就消失掉
country = 'China'
file_name = 'b.txt'
# list dict set 不需要用global来声明
# str int float tuple bool 需要声明
def say():
print(country)
def xiaoba():
country = 'Japan'
def update_file_name():
global file_name # 申明这里的变量是全局变量
file_name = 'c.json' # 全局变量不定义,放在函数中使用global,只用函数被调用在会声明变量,如果未声明就在其他函数中使用会报错
2.4 函数小练习
# 判断小数
# ‘1.5’
# 传参 包含. 其他均是数字
def is_float(num=0):
num = str(num)
if num.count('.') == 1:
left, right = num.split('.')
if left.isdigit() and right.isdigit():
return True
# if left.startswith('-') and left.lstrip('-') and right.isdigit():
if left[0] == '-' and left.lstrip('-') and right.isdigit():
return True
return False
python05篇 json和函数的更多相关文章
- 浅谈JSON.stringify 函数与toJosn函数和Json.parse函数
JSON.stringify 函数 (JavaScript) 语法:JSON.stringify(value [, replacer] [, space]) 将 JavaScript 值转换为 Jav ...
- JSON.stringify 函数 (JavaScript)
在bsrck项目中,使用jQuery.Form.js的ajaxSubmit时,遇到有文件上传的form提交,在firefox和chrome浏览器中测试,报Bad Request的错误,经查代码后发现是 ...
- JSON.parse 函数应用 (复制备忘)
JSON.parse 函数 JSON.parse 函数 (JavaScript) 将 JavaScript 对象表示法 (JSON) 字符串转换为对象. 语法 JSON.parse(text [, r ...
- php返回json数据函数实例
本文实例讲述了php返回json数据函数的用法,分享给大家供大家参考.具体方法如下: json_encode()函数用法: ? 1 echo json_encode(array('a'=>'bb ...
- iOS开发网络篇—JSON数据的解析
iOS开发网络篇—JSON数据的解析 iOS开发网络篇—JSON介绍 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式 ...
- JavaScript -- JSON.parse 函数 和 JSON.stringify 函数
JavaScript -- JSON.parse 函数 和 JSON.stringify 函数 1. JSON.parse 函数: 使用 JSON.parse 可将 JSON 字符串转换成对象. &l ...
- jQuery解决IE6/7/8不能使用 JSON.stringify 函数的问题
原文地址:http://www.ynpxrz.com/n1445665c2023.aspx JSON 对象是在 ECMAScript 第 5 版中实现的,此版于 2009 年 12 月发布:IE6 I ...
- jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题
https://github.com/douglascrockford/JSON-js使用其中的 json2.js 作为兼容.这个JS中的函数将JSON对象转换成JSON字符串,解决 IE6.7.8. ...
- php返回json数据函数实例_php技巧_脚本之家
本文实例讲述了php返回json数据函数的用法,分享给大家供大家参考.具体方法如下: json_encode()函数用法: echo json_encode(array('a'=>'bbbb', ...
随机推荐
- 『动善时』JMeter基础 — 35、JMeter接口关联【JSON提取器】详解
目录 1.JSON提取器介绍 2.JSON提取器界面详解 3.JSON提取器的使用 (1)测试计划内包含的元件 (2)HTTP Cookie管理器内容 (3)用户登陆请求界面内容 (4)JSON提取器 ...
- 聊聊java工程师换工作那些事
最近有个读者在苦恼一件事,那就是有大公司在挖他,他要不要从所在的小公司,跳槽到大公司,前提是两家公司的待遇基本一致.由这个问题结合自己多年的工作经验,来谈谈java工程师要不要跳槽,何时跳槽,怎么跳槽 ...
- celery异步任务体系笔记
1.异步框架示意图 2.celery 官方文档 http://docs.celeryproject.org/en/latest/index.html 3.启动celery的命令 启动 sender 自 ...
- nologin用户执行命令
使用su su -s 是指定shell,这里www用户是nologin用户,是没有默认的shell的,这里指定使用/bin/bash, -c 后面接需要运行的命令, 后面www是用www用户来运行 s ...
- RCNN系列、Fast-RCNN、Faster-RCNN、R-FCN检测模型对比
RCNN系列.Fast-RCNN.Faster-RCNN.R-FCN检测模型对比 一.RCNN 问题一:速度 经典的目标检测算法使用滑动窗法依次判断所有可能的区域.本文则预先提取一系列较可能是物体的候 ...
- 摄像头ISP系统原理(中)
摄像头ISP系统原理(中) AF(FOCUS)----自动对焦 根据光学知识,景物在传感器上成像最清晰时处于合焦平面上.通过更改 LENS 的位置,使得景物在传感器上清晰的成像,是 ISP FOCUS ...
- Java8 中使用Stream 让List 转 Map使用总结
在使用 Java 的新特性 Collectors.toMap() 将 List 转换为 Map 时存在一些不容易发现的问题,这里总结一下备查. 空指针风险 java.lang.NullPointerE ...
- python做。大神空闲时间能帮忙弄一串代码嘛?猜拳游戏,分很多种手的背面和正面,最后剩下的再石头剪刀布
.每天课程结束后,老师会选择一列的同学清扫教室,人数不定(建议根据当时情况输入),在收拾完教室后,最后一步是需要从这一列的同学中选择1-2人去倒垃圾桶,垃圾桶数量根据当时情况决定,目前采取的方式是, ...
- 「Spring Boot架构」集成Mybatis-Plus的实例详解
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 特性 无侵入:只做增强不做改变,引入它不会对现有工程 ...
- 树上染色+可怜与超市(树状DP)
这两道题是学长精心准备的,想了很长时间,比较经典. 第一题 树上染色 有一棵点数为 N的树,树边有边权.给你一个在 0∼N之内的正整数 K,你要在这棵树中选择 K 个点,将其染成黑色,并将其他的 N− ...