1、函数:(方法、功能)

1.提高代码的复用性

2.让代码更简洁、简化代码

1)定义一个简单的函数

def sayHello():     #函数名,定义函数
print("hello") #函数体
#函数不调用是不会被执行的
sayHello() #调用函数

2)函数的参数:形参、实参

def calc(a,b):   #a,b叫形参(形式参数)#位置参数,也叫必填参数
res = a * b
print('%s * %s = %s' % (a,b,res))
calc(7,8) #调用函数时,传入实参(实际参数),7传给a,8传给b

3)默认值参数

def op_file(filename,content=None): #content是默认值参数,非必填
pass

2、局部变量和return

#局部变量(+ return使用)

函数里面定义的变量,都是局部变量,只能在函数里面用,出了函数就不能用了

#如果在函数外print(变量) 就会报错

#return的作用

  1.return xxx   #调用完函数之后,返回处理的结果

  2.结束函数,函数遇到return,函数会立即结束

def op_file(file_name,content=None): #文件名、需要写入的内容(默认None)
f = open(file_name,'a+',encoding='utf-8')
f.seek(0)
if content: #如果内容不为空(写入)
f.write(content)
f.flush() #刷新,立即写入到文件
else: #内容为空(读)
all_user = f.read() #局部变量,在函数里面定义的变量,只能在函数里面用,出了函数就不能用了
return all_user #调用完函数之后,返回处理的结果
f.close() #op_file('a.txt','aaaa\nbbbb') #content传入值,写入
res = op_file('a.txt') #content=None,读文件,res接收函数的返回值
print(res)

【例】:return结束函数

def num():
for i in range(5):
print(i)
if i==3:
return #只写一个return,表示立即结束函数,相当于break,返回None
res = num()
print(res) #>>> 0 1 2 None

【例】函数里面如果没有return的话,默认返回None,函数里面return不是必须的,如果要接收函数的返回结果,就使用return,如果不需要函数结果,就不用return

import string
def check(pwd):
#密码长度6-7位,必须包含字母和数字
if len(pwd)>5 and len(pwd)<12:
if set(pwd) & set(string.ascii_letters) and set(pwd) & set(string.digits):
print("密码合法")
else:
print('密码不合法')
else:
print('密码长度6-11位')
res = check('123abcd') #函数里面如果没有return的话,默认返回None
print(res)

3、【例】:写一个 判断一个数是否是合法的小数 的函数

#需求分析
#定义一个函数
# 1、小数点个数 .count()=1
# 2、按照小数点进行分割 1.98 ->[1, 98]
# 3、正小数:小数点左边是正数;右边也是整数 s.87 98.s
# 4、负小数:左边:小数点左边以负号开头,且只有一个负号;右边是整数 -9.5
#-9.5->['-9',5],再-9按'-'切割成['',9]
def is_float(s):
s = str(s)
if s.count('.') == 1:
left = s.split('.')[0]
right = s.split('.')[1]
if left.isdigit() and right.isdigit():
print("是正小数")
return True
elif left.startswith('-') and left.split('-')[1].isdigit() and left.count('-')==1 and right.isdigit():
print("是负小数") #左边以‘-’开头,且只有一个负号,左边再按负号切割后的第二个元素是数字;右边也是数字
return True     #'-1'.split('-') -> ['','1'] print("不是小数") #其它情况返回false
return False print(is_float(1.98))
print(is_float(-2.98))
print(is_float(-1)) #False
print(is_float('s.98')) #False
print(is_float('1.s98'))
print(is_float(1.0)) #True
print(is_float(-.5)) #True
print(is_float('.98')) #False

4、常量:就是一个不变的值,一般全部用大写字母来定义  #比如PORT = 3306 ,比如,文件名FILENAME = 'a.txt'

money = 500
def test(consume):
return money - consume
def test1(money):
return test(money) + money
money = test1(money)
print(money) >>> 500

5、全局变量:

公共的变量,都可以用的变量

如果要修改全局变量的话,那要先声明一下修改的是全局变量

#少用全局变量:全局变量不安全,所有人都可以修改;全局变量会一直占着内存

    def test():
global a
a = 5 def test1():
c = a + 5
return c res = test1()
print(res) #>>>报错,a没有定义#因为test()没有被调用

6、另一种不用按顺序一一对应的传参方式:

def op_mysql(host,port,username,passwd,sql):
print('连接数据库')
op_mysql(sql='select * from xxx',
host='192.158.11.1',
username='root',
passwd='',
port=''
)

7、文件中的json串实际上是一个字符串,是一种通用的语言

从文件里面读出来的内容都是字符串,然后把json串转成字典,方便取值

#json文件里面必须使用双引号” ”,不能使用单引号

#http://www.bejson.com/可以校验是否是一个正确的json格式

#goods.json文件
{
"iphone":{ #文件里面必须是双引号
"color":"红色",
"num":1,
"price":98.5
},
"watch":{
"num":100,
"price":1,
"color":"white"
}
}

【例】:把文件中的json串转成字典(读文件)

方法一:json.loads('str')

import json  #导入json模块
f = open('goods.json',encoding='utf-8')
res = f.read() #读文件
goods_dic = json.loads(res) #将读文件的结果,即json串转成python的字典
print(goods_dic.get('iphone'))

方法二:json.load(f)

import json  #导入json模块
f = open('goods.json',encoding='utf-8')
print(json.load(f)) #传一个文件对象,直接把json转成字典#它会帮你读文件

八、把字典转成json 写到文件(写到文件,保存到磁盘,持久化保存)

方式一:json.dumps()

import json
dic = {
"iphone":{
"color":"红色",
"num":1,
"price":999
},
"watch":{
"color":"white",
"price":888
}
}
fw = open('phone.json','w',encoding='utf-8')
dic_json = json.dumps(dic,ensure_ascii=False,indent=4) #参数:ensure_ascii=False显示中文,indent=4缩进4位
fw.write(dic_json)

字典转json,方式二:json.dump() #参数传入字典、传入文件

fw = open('phone.json','w',encoding='utf-8')
json.dump(dic,fw,ensure_ascii=False,indent=4) #json.dump()传入文件对象,直接帮你写文件

九、【例】:使用函数 写注册和删除

#choice 1:注册 2:删除  #使用函数
import json
def op_file(filename,dic=None): #传入文件名、字典=None
if dic: #如果dic不为空,表示字典需要写入文件
with open(filename,'w',encoding='utf-8') as fw:
json.dump(dic,fw,ensure_ascii=False,indent=4) #把字典写入文件
else: #dic为空,表示读文件
with open(filename,encoding='utf-8') as f:
return json.load(f) FILE_NAME = 'user_info.json' #把文件名定义成常量
all_users = op_file(FILE_NAME) #调用函数,读文件,已有的用户名读到字典里面
#print(all_users)
for i in range(3):
choice = input("请输入选择,1:注册 2:删除").strip()
if choice:
if choice=='': #注册,dic不为空,写
name = input("请输入用户名:").strip()
pwd = input("请输入密码:").strip()
rpwd = input("请输入确认密码:").strip()
if name and pwd and rpwd:
if name not in all_users:
if pwd == rpwd:
all_users[name]=pwd
op_file(FILE_NAME,all_users)
print("注册成功")
break
else:
print("密码和确认密码不一致")
else:
print("用户名已存在")
else:
print("用户名或密码不能为空")
elif choice=='': #删除
name = input("请输入需要删除的用户名:").strip()
if name:
if name in all_users:
all_users.pop(name) #先删除字典中的姓名
op_file(FILE_NAME,all_users) #调用函数,重新写入文件
print("删除成功")
break
else:
print("输入的用户名不存在")
else:
print("用户名不能为空")
else:
print("输入有误,1:注册 2:删除") else:
print("输入不能为空,1:注册 2:删除")
###user_info.json###
{
"lisi": "",
"www": "",
"wangwu": ""
}

aa

python学习笔记(六)- 函数、文件json与python字典互操作的更多相关文章

  1. Python学习笔记六:文件处理

    一:打开文件 open(name,mode,[bufferSize]) name:文件路径 mode:文件打开方式 二:文件读取 read()方法:可以一次读取文件的全部内容,Python把内容读到内 ...

  2. Python学习笔记六

    Python课堂笔记六 常用模块已经可以在单位实际项目中使用,可以实现运维自动化.无需手工备份文件,数据库,拷贝,压缩. 常用模块 time模块 time.time time.localtime ti ...

  3. Python学习笔记之函数

    这篇文章介绍有关 Python 函数中一些常被大家忽略的知识点,帮助大家更全面的掌握 Python 中函数的使用技巧 1.函数文档 给函数添加注释,可以在 def 语句后面添加独立字符串,这样的注释被 ...

  4. Python学习笔记之从文件中读取数据

    10-1 Python 学习笔记:在文本编辑器中新建一个文件,写几句话来总结一下你至此学到的Python 知识,其中每一行都以“In Python you can”打头.将这个文件命名为learnin ...

  5. 【Python学习笔记之二】浅谈Python的yield用法

    在上篇[Python学习笔记之一]Python关键字及其总结中我提到了yield,本篇文章我将会重点说明yield的用法 在介绍yield前有必要先说明下Python中的迭代器(iterator)和生 ...

  6. Python学习笔记之基础篇(-)python介绍与安装

    Python学习笔记之基础篇(-)初识python Python的理念:崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. python的历史: 1989年,为了打发圣诞节假期,作者Guido开始写P ...

  7. python学习笔记(六)---文件操作与异常处理机制

    文件读取 读取整个文件 要读取文件,需要一个包含几行文本的文件.下面首先来创建一个文件,它包含精确到小数点后30位的圆周率值,且在小数点后每10位处都换行: pi_digits.txt 3.14159 ...

  8. Python学习笔记六--文件和输入输出

    6.1文件对象 所有Python对文件的操作都是基于对文件对象的操作.那么就从文件对象的创建说起.open()[file()]提供初始化输入输出的接口.open()成功打开文件时会返回一个文件对象. ...

  9. Python学习笔记之—— File(文件) 对象常用函数

    file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数: 1.file.close() close() 方法用于关闭一个已打开的文件.关闭后的文件不能再进行读写操作, 否则会触 ...

  10. 小甲鱼:Python学习笔记003_函数

    >>> # 函数>>> def myFirstFunction(params1,params2...): print("这是我的第一个函数!") ...

随机推荐

  1. 【paper】MTCNN

    参考 1. MTCNN笔记; 完

  2. Vagrant 命令详解

    1.查看当前登录的用户系统上所有活动的Vagrant环境的状态. vagrant global-status参数:--prune 清除列表中的无效条目   ... ...    

  3. Gym - 101490F:Endless Turning (半平面交)

    pro:给定R条街道,现在小孩在某条街上骑车车,最开始他沿着所在街道向东(1,4象限的方向)驶去,如果他遇到街道的交叉口,他会右转.问他转N次后在哪个街道.有特殊情况是他一只遇不到交叉口,会沿着街道一 ...

  4. Python全栈之路----常用模块----sys模块

    sys.argv  命令行参数 List,第一个元素是程序本身路径 #test.py import sys print(sys.argv) D:\ProgramLearning\Py_program& ...

  5. mysql连接拍错总结

    1. ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10060)   ? 关闭网络防火墙.

  6. kvm创建新虚拟机

    安装图形化管理界面yum install virt-manager -y 安装好之后 新建虚拟机,我使用的方法是使用ISO镜像文件安装 选择镜像 设置内存 如此,一步一步走下去即可,不再截图 创建好之 ...

  7. CSVN配置自动备份策略

    在浏览器中登录CSVN管理页面,登录地址就是ip:3343,版本库->backup schedule ,选择type of job(备份类型),when to run(备份频率和时间),numb ...

  8. Linux useful commands

    cat misc. cat xxx | more cat xxx | less cat > xxx , create a file xxx cat -n xxx | more with line ...

  9. solrJ

    导入jar包 package com.tzy.solrJ; import java.io.IOException; import org.apache.solr.client.solrj.SolrSe ...

  10. Linux tmpwatch命令详解

    Linux tmpwatch命令 Linux tmpwatch命令用于删除暂存文件. 执行tmpwatch指令可删除不必要的暂存文件,您可以设置文件超期时间,单位以小时计算 用法: tmpwatch ...