一、json

  1. json就是一个字符串,只不过是所有语言能解析这个字符串。
    1.1 python的数据类型转为json
  1. import json
  2. d = {'name': 'xiaohei', 'cars': [1, 2, 3], 'house': (4, 5, 6), 'addr': '北京'}
  3. # json就是一个字符串,只不过是所有语言能解析这个字符串
  4. result = json.dumps(d) # 把python 的数据类型转json (list、tuple、dict)
  5. result2 = json.dumps(d, ensure_ascii=False, indent=4) # ensure_ascii:False会把带中文的显示出来 indent:可以加上缩进,更好识别去看
  6. print(result2, type(result2))
  7.  
  8. # json.dump() # 将字典转成json,并写入文件中
  9. with open('word.txt','w', encoding='utf-8') as fw:
  10. json.dump(d, fw, indent=4, ensure_ascii=False)
  1. 1.2 json转为python的数据类型
  1. import json
  2. # 把json转成 python 的数据类型(list、tuple、dict)
  3. json_str = '{"name": "xiaohei", "cars": [1, 2, 3], "house": [4, 5, 6],"addr":"\u5317\u4eac"}'
  4. dict2 = json.loads(json_str)
  5. print(dict2)
  6.  
  7. # json.load()先读取文件内容,再将json转成字典
  8. with open('word.txt', encoding='utf-8') as fr:
  9. d2 = json.load(fr)
  1. 二、函数
    2.1 函数的定义
  1. # 函数、方法
  2. import string
  3. import datetime
  4. def hello(): # 定义函数,提高代码的复用性
  5. print('hello')
  6.  
  7. hello() # 函数调用 函数名()
  8.  
  9. def baoshi():
  10. print('now :', datetime.datetime.today())
  11. # 函数返回值
  12. # 函数没有写返回值时,默认返回None
  13. # return:
  14. # 1、返回数据
  15. # 2、函数里只要遇到return 函数立马执行结束
  16. def check_password(password): # 参数,位置参数 这里的参数叫做形参
  17. password_set = set(password)
  18. if password_set & set(string.digits) and password_set & set(string.ascii_uppercase) \
  19. and password_set & set(string.ascii_lowercase):
  20. return True
  21. else:
  22. return False
  23. password_result = check_password('12312321') # 这里传的参数叫做实参
  24. print(password_result)
  25. baoshi()
  1. 2.2 函数的参数
  1. import string
  2. import datetime
  3.  
  4. def baoshi(): # 无参
  5. print('now :', datetime.datetime.today())
  6.  
  7. def check_password(password): # 必填参数,位置参数
  8. pass
  9.  
  10. def op_file(file_name,content = None): # 如果传参取传参的值,没传取默认值
  11. pass
  12. if content:
  13. write_file(file_name, content)
  14. else:
  15. result = read_file(file_name)
  16. return result
  17. print(op_file('2.txt'))
  18. op_file('2.txt', 'slskfslls两节课')
  19. # 可选参数,它不是必传的,不限制参数个数,它是把参数放到了一个list中
  20. def send(*args):
  21. for p in args:
  22. print('发短信给xxx%s' % p)
  23. send()
  24. send(110)
  25. send(110, 112, 119)
  26. # 关键字参数,它不是必传的,不限制参数个数.它是把参数放到了一个字典里面
  27. # 传参必须是关键字的方式,key=value
  28. def send_sms(**kwargs):
  29. print(kwargs)
  30. send_sms()
  31. send_sms(xiaolan = '晚上好')
  32. send_sms(xiaobai='新年好', xiaohei='生日快乐', xiaozi='')
  33. # 四种参数都用上的顺序:1.必填参数 2. 默认值参数 3. 参数组 4. 关键字参数
  34. def dc_func(name,age,country='China',sex='女',*agrs,**kwargs):
  35. pass
  36. # name = 'xh' age=18 country = 'abc' sex = 'efg' ('hhh',)传参给参数组 names=1, b=2, c=3 作为字典{'names': 1, 'b': 2, 'c': 3}传参给关键字参数
  37. dc_func('xh', 18, 'abc', 'efg', 'hhh',names=1, b=2, c=3)
  38. # name = 'xh' age=18 country = 'abc' sex = 'efg' ('hhh','2335','23532')传参给参数组
  39. dc_func('xh', 18, 'japan', 'nan', 'abc', 'efg', 'hhh', '2335', '23532')
  40.  
  41. def hhh(name, age, sex):
  42. print(name)
  43. print(age)
  44. print(sex)
  45. l = ['xh', 18, 'nan']
  46. hhh(*l) # 拆包传参,但是参数个数要对应上,不能多
  47. d = {'name': 'xiaohei', 'age': 18, 'sex': 'nam'}
  48. hhh(**d) # 字典的key与函数中的参数名称一致的情况下,可以这么传参
  1.  
  1. 2.3 函数的返回
  1. # 如果一个函数没有返回值的,返回None
  2. def test():
  3. print('hello')
  4. # 如果一个函数返回值是多个的,返回的是元组,也可以用多个参数接受返回值(拆包)
  5. def test2():
  6. return 1, 2, 3
  7. print(test())
  8. a, b, c = test2() # 也可以用多个参数接受返回值(拆包)
  9. print(test2())
  10. # 全局变量:一般定义在代码的最上面,大家都可以用,是公共的变量。全局变量一直占用内存
  11. # 局部变量:在函数里面定义的变量,都是局部变量.函数中优先找函数内部的变量,没有再去找全局变量
  12. # 函数中的变量的作用域是在函数内,局部变量在函数调用完后就消失掉
  13. country = 'China'
  14. file_name = 'b.txt'
  15. # list dict set 不需要用global来声明
  16. # str int float tuple bool 需要声明
  17. def say():
  18. print(country)
  19. def xiaoba():
  20. country = 'Japan'
  21. def update_file_name():
  22. global file_name # 申明这里的变量是全局变量
  23. file_name = 'c.json'
  24.  
  25. # 全局变量不定义,放在函数中使用global,只用函数被调用在会声明变量,如果未声明就在其他函数中使用会报错
  1. 2.4 函数小练习
  1. # 判断小数
  2. # ‘1.5’
  3. # 传参 包含. 其他均是数字
  4. def is_float(num=0):
  5. num = str(num)
  6. if num.count('.') == 1:
  7. left, right = num.split('.')
  8. if left.isdigit() and right.isdigit():
  9. return True
  10. # if left.startswith('-') and left.lstrip('-') and right.isdigit():
  11. if left[0] == '-' and left.lstrip('-') and right.isdigit():
  12. return True
  13. return False
  1.  

python05篇 json和函数的更多相关文章

  1. 浅谈JSON.stringify 函数与toJosn函数和Json.parse函数

    JSON.stringify 函数 (JavaScript) 语法:JSON.stringify(value [, replacer] [, space]) 将 JavaScript 值转换为 Jav ...

  2. JSON.stringify 函数 (JavaScript)

    在bsrck项目中,使用jQuery.Form.js的ajaxSubmit时,遇到有文件上传的form提交,在firefox和chrome浏览器中测试,报Bad Request的错误,经查代码后发现是 ...

  3. JSON.parse 函数应用 (复制备忘)

    JSON.parse 函数 JSON.parse 函数 (JavaScript) 将 JavaScript 对象表示法 (JSON) 字符串转换为对象. 语法 JSON.parse(text [, r ...

  4. php返回json数据函数实例

    本文实例讲述了php返回json数据函数的用法,分享给大家供大家参考.具体方法如下: json_encode()函数用法: ? 1 echo json_encode(array('a'=>'bb ...

  5. iOS开发网络篇—JSON数据的解析

    iOS开发网络篇—JSON数据的解析 iOS开发网络篇—JSON介绍 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式 ...

  6. JavaScript -- JSON.parse 函数 和 JSON.stringify 函数

    JavaScript -- JSON.parse 函数 和 JSON.stringify 函数 1. JSON.parse 函数: 使用 JSON.parse 可将 JSON 字符串转换成对象. &l ...

  7. jQuery解决IE6/7/8不能使用 JSON.stringify 函数的问题

    原文地址:http://www.ynpxrz.com/n1445665c2023.aspx JSON 对象是在 ECMAScript 第 5 版中实现的,此版于 2009 年 12 月发布:IE6 I ...

  8. jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题

    https://github.com/douglascrockford/JSON-js使用其中的 json2.js 作为兼容.这个JS中的函数将JSON对象转换成JSON字符串,解决 IE6.7.8. ...

  9. php返回json数据函数实例_php技巧_脚本之家

    本文实例讲述了php返回json数据函数的用法,分享给大家供大家参考.具体方法如下: json_encode()函数用法: echo json_encode(array('a'=>'bbbb', ...

随机推荐

  1. 安装spark 报错:java.io.IOException: Could not locate executable E:\hadoop-2.7.7\bin\winutils.exe

    打开 cmd 输入 spark-shell 虽然可以正常出现 spark 的标志符,但是报错:java.io.IOException: Could not locate executable E:\h ...

  2. Yolo:实时目标检测实战(上)

    Yolo:实时目标检测实战(上) YOLO:Real-Time Object Detection 你只看一次(YOLO)是一个最先进的实时物体检测系统.在帕斯卡泰坦X上,它以每秒30帧的速度处理图像, ...

  3. 在 CUDA C/C++ kernel中使用内存

    在 CUDA C/C++ kernel中使用内存 如何在主机和设备之间高效地移动数据.本文将讨论如何有效地从内核中访问设备存储器,特别是 全局内存 . 在 CUDA 设备上有几种内存,每种内存的作用域 ...

  4. httprunnermanager安装和配置

    服务端安装mysql数据库(建议5.7以上的,mysql安装教程),设置utf-8编码,创建对应的数据库,设置好相应的用户名,密码,然后启动mysql 下载httprunnermanager 安装ht ...

  5. VRRP协议的原理与配置

    VRRP出现的原因: 局域网中的用户终端通常采用配置一个默认网关的形式访问外部网络,如果此时默认网关设备发生故障,将中断所有用户终端的网络访问,这很可能会给用户带来不可预计的损失. VRRP的优点: ...

  6. Python批量重命名 工具贴(一)

    说明 由于在处理图片数据和其他数据时,经常需要对数据进行批量重命名操作,每次使用时都需要重写,非常不便,因此记录下重命名代码方便后续使用. 文件结构说明 参数说明: path为输入路径 image_t ...

  7. linux远程和软件包的管理

    远程管理 ssh   用户名@对方IP地址 -X   在本地可以运行对方的图形程序 端口 22 [root@room9pc01 ~]# ssh root@172.25.0.11 [root@serve ...

  8. SpringBoot整合SpringSecurity示例实现前后分离权限注解

    SpringBoot 整合SpringSecurity示例实现前后分离权限注解+JWT登录认证 作者:Sans_ juejin.im/post/5da82f066fb9a04e2a73daec 一.说 ...

  9. Ajax 和 JSON

    Ajax:异步更新页面的技术,必须在http或者https网络网络协议下使用             1.原生js实现:共4步             2.jQuery:$.ajax(配置对象);   ...

  10. noip2008 总结

    noip 2008题解 笨小猴 原题 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼.但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!这种方法的具体描述如下:假设 ...