python使用笔记006-函数+json操作
一、函数
函数:提高代码的复用性
1.1 函数的定义
1 def hello():
2 print('hello')
3 print('fdsfjslkfs')
4
5 #函数不调用就不会执行
6 hello()
7
8 def write_file(file_name,content):#形参,形式参数
9 with open(file_name,'w',encoding='utf-8') as f:
10 f.write(content)
11
12
13 write_file('函数.txt','fdsfslfre分倒是累计额老人家')#实参
14
15 #函数返回值
16 #函数没有写返回值时,默认返回None
17 #return:
18 #1、返回数据
19 #2、函数里只要遇到return 函数立马执行结束
20 def read_file(file_name):
21 with open(file_name,'r',encoding='utf-8') as f:
22 content = f.read()
23 return content
24
25 content = read_file('函数.txt')
26 print(content)
1.2 函数的参数
1 def a():#无参数
2 pass
3
4 def b(name,age):#必填参数,位置参数
5 pass
6
7 #默认值参数在调用函数时,如果传了参数值,则使用参数值,如果未传参数值,则用默认的参数值
8 def op_file(file_name,content=None):#默认值参数
9 with open(file_name,'a+',encoding='utf-8') as f:
10 if content:
11 f.write(str(content))
12 else:
13 f.seek(0)
14 result = f.read()
15 return result
16
17 #可变参数
18 #1、这个是不是必须传的
19 #非必传
20 #2、限制不限制参数的个数
21 #不限个数
22 #3、args
23 #元组
24 def send_sms(*args):
25 print(type(args))
26 print(args)
27
28 send_sms()
29 #send_sms('198','159')
30 send_sms('198','159','123','234','432','4342','098','198','159','123','234','432','4342','098')
31
32
33 #关键字参数
34 def test(**kwargs):#传入必须得指定关键字,kwargs是字典
35 print(kwargs)
36 print(type(kwargs))
37
38 test(name='xiaolin',age=19,sex='男')
39
40 #如果四种参数一起用的话,顺序必须是:必填参数,默认值,可变参数,关键字参数
41 #必填参数必须写到默认值参数前面
42 #默认参数必须在可变参数前面
43 #可变参数必须在关键字参数
44 def test2(name,content=None,*args,**kwargs):
45 print(name)
46 print(content)
47 print(args)
48 print(kwargs)
49
50
51 def test3(name,phone,qq,addr,sex):
52 print(name)
53 print(phone)
54 print(qq)
55 print(addr)
56 print(sex)
57
58
59 test3('186','xiaolin','34334','beijing','女')#根据定义的参数顺序来传参
60 test3(phone='123',name='fdsf',qq='re4343',sex='男',addr='guangzhou')#指定参数名字来传参,跟参数位置无关
61 test3('cj001','185134',sex='男',addr='guangzhou',qq='r90343')#组合传参
62 #test3('cj001','185134',sex='男',addr='guangzhou','r90343')#错误,不能这么写
1.3 函数返回
返回单个变量
1 def fun1(): 2 a = 4 3 return a #返回一个参数
返回多个变量
用一个变量来接收,则该参数为元组
如果用多个变量来接收,方法里定义的变量类型是啥,返回的就是啥
但是函数返回几个变量,接收的变量也得是几个
利用的原理是:解包
1 def fun():
2 a = 1
3 b = 2
4 c = 3
5 return a,b,c
6
7 #返回结果是元组
8 result = fun()
9 print(result)
10 #也可以用多个变量来接收,但是函数返回几个变量,接收的变量也得是几个
11 a,b,c = fun()
12 print(a,b,c)
13
14 #解包
15 info = ['xiaohei','beijing','haidianqu',19]
16 name,addr,area,age = info
17 print(name,addr,area,age)
1.4 函数小练习
1 #判断传入参数是否为float类型
2 #1、传参
3 #2、把入参转成字符串
4 #3、判断小数点个数是否为1
5 #4、判断小数点前面的是否为整数
6 #5、判断小数后面是否为整数
7 def is_float(s):
8 boolean = False
9 s = str(s)
10 if s.count('.') == 1:
11 left,right = s.split('.')#根据小数点进行分割
12 if right.isdigit() and left.isdigit() and (int(left) != 0 or int(right) != 0):#左边和右边都是小数
13 boolean = True
14 if left.startswith('-') and left.count('-') == 1:
15 num = left[1:]
16 if num.isdigit() and right.isdigit() and (int(num) != 0 or int(right) != 0):
17 boolean = True
18 return boolean
19
20
21 print(is_float(0.12))
22 print(is_float(1.12))
23 print(is_float(1))
24 print(is_float('sss.0001'))
25 print(is_float('sss.ssss'))
26 print(is_float(-1.23))
27 print(is_float('0.0'))
28 print(is_float('-0.0'))
执行结果如图所示:

二、json操作
json就是一串字符串,如果在操作json时要获取值很难,将json转成字典就很好操作了
1 import json
2 #python的数据类型和json互相转换
3 #json就是一串字符串
4 d = {'key1':'v1','k2':'v2','k3':'v3','name':'刘婕'}
5 json_str = json.dumps(d,indent=4,ensure_ascii=False)#字典转成字符串,转成json了
6 print(json_str)
7
8 #json.dump()将字典转成json,并写入文件中
9 with open('u2.txt','w',encoding='utf-8') as f:
10 json.dump(d,f,indent=4,ensure_ascii=False)#indent 缩进,ensure_ascii=False 如果是中文就直接显示中文了
1 import json
2 json_str = '''
3 {
4 "key1": "v1",
5 "k2": "v2",
6 "k3": "v3",
7 "name": "刘婕"
8 }
9 '''
10 dic = json.loads(json_str)#json字符串转字典
11 print(dic)
12
13 #如果json不合法,就会报错
14 #比如json中有单引号
15 json_str1 = '''
16 {
17 'key1': "v1",
18 "k2": "v2",
19 "k3": "v3",
20 "name": "刘婕"
21 }
22 '''
23 dic1 = json.loads(json_str1)#会报错,报json格式不对
24 print(dic1)
25
26 with open('users.txt') as f:
27 result = json.load(f) #先读取文件内容,再将json转成字典
28 print(result)
报错如图所示:

要查看json字符串格式是否正确,可以在下面网站进行查看

三、其他知识点
3.1 交换变量的值
1 a = 1
2 b = 2
3 c = 3
4 a,b = b,a#交换两个变量的值
5 a,b,c = c,a,b#交换三个变量的值
6 print(a,b,c)
3.2 三元表达式
1 #三元表达式
2 n = 2
3 sex = '男' if n == 1 else '女'
4 print(sex)
3.3 列表生成式
1 #列表生成式
2 l = [1,2,3,4,5,6,7,8,9,12,13,14,45,98,34,23,90]
3 l2 = [str(i)+'km' for i in l]
4 l3 = [str(i)+'km' for i in l if i >= 30]
5 print(l2)
6 print(l3)
python使用笔记006-函数+json操作的更多相关文章
- Python学习笔记之函数
这篇文章介绍有关 Python 函数中一些常被大家忽略的知识点,帮助大家更全面的掌握 Python 中函数的使用技巧 1.函数文档 给函数添加注释,可以在 def 语句后面添加独立字符串,这样的注释被 ...
- python学习笔记(二)、字符串操作
该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.字符串基本操作 所有标准序列操作(索引.切片.乘法.成员资格检查.长度.最小值和最大值)都适用于 ...
- 吴裕雄--天生自然python学习笔记:Python3 JSON 数据解析
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. Python3 中可以使用 json 模块来对 JSON 数据进 ...
- 小甲鱼:Python学习笔记003_函数
>>> # 函数>>> def myFirstFunction(params1,params2...): print("这是我的第一个函数!") ...
- go语言笔记——切片函数常见操作,增删改查和搜索、排序
7.6.6 搜索及排序切片和数组 标准库提供了 sort 包来实现常见的搜索和排序操作.您可以使用 sort 包中的函数 func Ints(a []int) 来实现对 int 类型的切片排序.例如 ...
- Python学习笔记 - day6 - 函数
函数 函数在编程语言中就是完成特定功能的一个词句组(代码块),这组语句可以作为一个单位使用,并且给它取一个名字.可以通过函数名在程序的不同地方多次执行(这叫函数的调用).函数在编程语言中有基本分为:预 ...
- Python学习笔记八:文件操作(续),文件编码与解码,函数,递归,函数式编程介绍,高阶函数
文件操作(续) 获得文件句柄位置,f.tell(),从0开始,按字符数计数 f.read(5),读取5个字符 返回文件句柄到某位置,f.seek(0) 文件在编辑过程中改变编码,f.detech() ...
- python学习笔记(4)--函数
1.函数 函数是指将一组语句的集合通过一个名字封装起来.要想执行这个函数,只需调用其函数名即可. 函数的特性: 1.减少重复代码 2.使程序变的课扩展 3.使程序变得易维护 语法定义: def pri ...
- [Python] 学习笔记之MySQL数据库操作
1 Python标准数据库接口DB-API介绍 Python标准数据库接口为 Python DB-API,它为开发人员提供了数据库应用编程接口.Python DB-API支持很多种的数据库,你可以选择 ...
随机推荐
- jupyter notebook 默认文件路径修改以及启动
其实这个方法有时候不是特别有效额 方法一: 查了网上好多其他的方法,但是都没用,只好独辟蹊径了. 首先找到anaconda的安装路径,找到jupyter notebook,我的是如下: 发送快捷方式到 ...
- 桥接PyTorch和TVM
桥接PyTorch和TVM 人工智能最引人入胜的一些应用是自然语言处理.像BERT或GPT-2之类的模型及其变体,可以获住足够多的文本信息. 这些模型属于称为Transformers的神经网络类体系结 ...
- 短波红外(SWIR)相机camera
短波红外(SWIR)相机camera AVs Can't Drive Everywhere. Can TriEye's SWIR Camera Help? TriEye的短波红外(SWIR)摄像机能否 ...
- 20 岁发表 SCI 的学霸,梦想用算法改变世界
2021 年 2 月,"新内容 新交互" 全球视频云创新挑战赛启幕.本次大赛由英特尔联合阿里云主办,与优酷战略技术合作,天池平台和阿里云视频云团队共同承办.大赛自开赛以来,吸引了全 ...
- halcon——缺陷检测常用方法总结(模板匹配(定位)+差分)
引言 机器视觉中缺陷检测分为一下几种: blob分析+特征 模板匹配(定位)+差分 光度立体:halcon--缺陷检测常用方法总结(光度立体) - 唯有自己强大 - 博客园 (cnblogs.com) ...
- vue3.0的变化
初涉vue3.0,下面是我在demo中遇到的一些问题(我是用的vue-cli进行开发) [1]main.js中配置 第一个变化 vue2.x === Vue.prototype.$baseURL= ...
- hbase统计表的行数的三种方法
有些时候需要我们去统计某一个hbase表的行数,由于hbase本身不支持SQL语言,只能通过其他方式实现. 可以通过一下几种方式实现hbase表的行数统计工作: 这里有一张hbase表test:tes ...
- .NET Worker Service 作为 Windows 服务运行及优雅退出改进
上一篇文章我们了解了如何为 Worker Service 添加 Serilog 日志记录,今天我接着介绍一下如何将 Worker Service 作为 Windows 服务运行. 我曾经在前面一篇文章 ...
- docker安装nextcloud私人网盘,开启https配置证书
docker安装nextcloud私人网盘 之前一直用的百度网盘最近svip超级会员到期了,续费要¥199元,对于一个打工人的我来说有点儿贵.作为技术人的一员,我就来发挥发挥自己的长处,来搭建一个私人 ...
- 「10.19」最长不下降子序列(DP)·完全背包问题(spfa优化DP)·最近公共祖先(线段树+DFS序)
我又被虐了... A. 最长不下降子序列 考场打的错解,成功调了两个半小时还是没A, 事实上和正解的思路很近了,只是没有想到直接将前$D$个及后$D$个直接提出来 确实当时思路有些紊乱,打的时候只是将 ...