一、修改文件

修改文件方法:简单粗暴直接,步骤以下:

#1、打开一个文件,获取到文件的内容

#2、对内容进行修改

#3、清空文件的内容

#4、把新的内容写入到文件

代码示例:

f=open('username','a+')

f.seek(0)

all_str=f.read()

new_str=all_str.replace('123456','79910')

f.seek(0)

f.truncate()

f.write(new_str)

f.close()

#把每行的内容加上str,代码示例:

f=open('username','a+')

f.seek(0)

all_str=''

fors inf:

new_s='syz'+s

all_str=all_str+new_s

f.seek(0)

f.truncate()

f.write(all_str)

f.close()

f =open('username', 'a+')

f.write()#只能写字符串

f.writelins()#会帮助循环一次

# fw = open('username','w')

# fw.write('hhhh')

# fw.flush() #强制把缓冲区里面的数据写到磁盘上

#打开两个文件

#a文件

#写一行到b文件

#a.txt a.txt.bak

#删掉a文件,b文件名改成a文件名

#with打开不用关文件

#花替换为flower

importos

withopen('words',encoding='utf-8') asfr,open('.words.bak','w',encoding='utf-8') asfw:

forline infr:

new_line=line.replace('花','flower')

fw.write(new_line)

os.remove('words')#删除文件

os.rename('.words.bak','words')#改名

二、函数

概念:函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性,和代码的重复利用率、代码可扩展。

函数代码结构:

def say(): #函数名

print('hello')#函数体

#函数不调用是不会被执行的

调用函数时用函数名+括号的格式

# say() #调用函数

1、函数的参数

函数在调用的时候,可以传入参数,有形参和实参

形参:

形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。

实参:

实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。函数调用结束返回主调用函数后则不能再使用该形参变量。

def calc(a,b): #形参, 形式参数

#位置参数,必填参数

res = a * b

print('%s * %s = %s'%(a,b,res))

# calc(7,8) #实参,实际参数

2、参数组:

参数组的参数处用“*args”表示。参数组特点:(1)参数是非必填的;(2)没有限制参数的个数;(3)传过来的参数放到args参数里,不限格式

def syz(*args):#参数组

username=args[0]

pwd=args[1]

age=args[2]

print(args)

syz('liubei','2423','2323')

执行结果:

('liubei', '2423', '2323')

如果定义函数时,写成 def syz(a,*args),则a是必传参数,*args是非必填的

def syz(a,*args):#参数组

print(args)

syz('liubei','2423','2323')

执行结果:

('2423', '2323')

3、关键字参数

关键字参数用“**kwargs”表示。特点:(1)参数是非必填;(2)没有限制参数个数;(3)所传参数必须是字典格式。

def syz2(**kwargs):#关键字参数,参数放到字典里面

print(kwargs)

syz2()

syz2(name='nhy',age=38)

syz2(name='nhy',age=38,addr='回龙观',home='河南')

代码执行结果:

如果def syz2(time,**kwargs),则time参数必传。其中,time='20180912'是第一个参数time的值,因此输出kwargs时,没有time这一项

def syz2(time,**kwargs):#关键字参数,参数放到字典里面

print(kwargs)

syz2(name='nhy',age=38,addr='回龙观',time='20180420')

代码执行结果:

{'age': 38, 'addr': '回龙观', 'name': 'nhy'}

4、函数的返回值:

每个函数都有返回值,如果没有在函数里面指定返回值的话,在python里面函数执行完之后,默认会返回一个None,函数也可以有多个返回值,如果有多个返回值的话,会把返回值都放到一个元组中,返回的是一个元组。

为什么要有返回值呢,是因为在这个函数操作完之后,它的结果在后面的程序里面需要用到。

函数中的返回值使用return,函数在遇到return就立即结束。

操作文件的函数,如果传内容参数,则将对应内容写入文件。没有传内容,就读取文件原来的内容,代码示例:

def op_file(file_name,conent=None):

#默认值参数,它是非必填的

f = open(file_name,'a+',encoding='utf-8')

f.seek(0)

if conent:#不为空代表写

f.write(conent)

f.flush()

else:

all_users = f.read()

return all_users #调用完函数之后,返回什么结果

f.close()

# res = op_file('a.txt')

# print(res)

def haha():

#函数里面遇到return函数就立即结束了

for i in range(5):

print(i)

if i==3:

return #只写一个return的话,就返回None

# res = haha()

# print(res)

检查输入的密码是否符合要求,密码包含大小写字母、数字、特殊字符,长度6-11之间

import string

def check(pwd):

#长度6-11

#字母和数字吧

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('密码不合法')

# res = check('asd1234') #函数里面如果没有return的话,默认返回None

案例:判断是否为小数:

#需求分析:

#1、 小数点个数 .count()

#2、按照小数点进行分割 1.98 [1,98] s.87 98.s1

#3、正小数:小数点左边是整数 右边也是整数 .isdigits()

#负小数:小数点左边是以负号开头,但是只有一个负号,右边也是整数 -9.85

defis_float(s):

s=str(s)if s.count('.')==1:#小数点个数

s_list = s.split('.')

left= s_list[0] #小数点左边

right = s_list[1] #小数点右边

if left.isdigit() and right.isdigit(): #正小数

returnTrueelif left.startswith('-') and left.count('-')==1 and\

left.split('-')[1].isdigit() and\

right.isdigit():#判断合法负小数

returnTruereturn False

三、变量

局部变量和全局变量

局部变量意思就是在局部生效的,出了这个变量的作用域,这个变量就失效了

全局变量的意思就是在整个程序里面都生效的,在程序最前面定义的都是全局变量,全局变量如果要在函数中修改的话,需要加global关键字声明,如果是list、字典和集合的话,则不需要加global关键字,直接就可以修改。

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

def sayName():

global name

name = '刘伟'

print('name1',name)

def lw():

age = 28

return age

def setName():

global name

name = '刘备'

# sayName()

# setName()

# print('name2',name)

一个函数中使用多个变量

def op_mysql(host,port,username,password,db,charset,sql):

print('连接数据库')

op_mysql(

'192.168.1.1',

3306,'root','123456','jxz','utf-8','select')

op_mysql(

host='192.168.1.1',

db='sfsdf',

charset='sdfsdf',

sql='select * from user;'

)

四、递归

在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。

递归调用的意思就是,在这个函数内部自己调用自己,就有点循环的意思。

def test1():

num = int(input('please enter a number:'))

if num%2==0:#判断输入的数字是不是偶数

return True #如果是偶数的话,程序就退出了,返回true

print('不是偶数请重新输入!')

return test1()#如果不是偶数的话继续调用自己,输入值

# print(test1())#调用test

#少用递归,递归最多递归999,递归的效率不高。

i = 0

def test():

global i

i+=1

print(i)

test()

test()

递归调用的特性:

1. 必须有一个明确的结束条件

2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少

3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)

五、json数据解析

JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。

Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数:

json.dumps():对数据进行编码。把python的数据类型变成json串

json.loads(): 对数据进行解码。把json串变成python的数据类型

json.dumps与 json.loads 实例:

importjson#json串是一个字符串#把json串转换成字典

f = open('product.json',encoding='utf-8')#res = f.read()#product_dic = json.loads(res) #把json串变成python的数据类型#print(json.load(f)) #传一个文件对象,它会帮你读文件

d ={'zll':{'addr':'北京','age':28},'ljj':{'addr':'北京','age':38}

}

fw= open('user_info.json','w',encoding='utf-8')#dic_json = json.dumps(d,ensure_ascii=False,indent=4) #字典转成json,字典转成字符串#fw.write(dic_json)

json.dump(d,fw,ensure_ascii=False,indent=10) #操作文件

将数据类型为字典的变为json串写入文件,将文件中的json串变为字典,读取出来,代码:importjsondef op_data(filename,dic=None):if dic:#写入进去

with open(filename,'w',encoding='utf-8') as fw:

json.dump(dic,fw,ensure_ascii=False,indent=4)else:

with open(filename,encoding='utf-8') as fr:returnjson.load(fr)

FILE_NAME= 'user_info.json'all_users=op_data(FILE_NAME)for i in range(3):

choice= input('输入,1注册,2、删除')if choice=='1':

username= input('usenrame:')

pwd= input('pwd:')if username not inall_users:

all_users[username]=pwd

op_data(FILE_NAME,all_users)elif choice=="2":

username= input('usenrame:')

all_users.pop(username)

op_data(FILE_NAME, all_users)

六、内置函数

print(all([1,2,3,4]))#判断可迭代的对象里面的值是否都为真

print(any([0,1,2,3,4]))#判断可迭代的对象里面的值是否有一个为真

print(bin(10))#十进制转二进制

print(bool(None))#把一个对象转换成布尔类型

print(chr(69))#打印数字对应的ascii

print(ord('E'))#打印字符串对应的ascii码

s='nhy'

d={}

print(dir(d))#打印传入对象的可调用方法

exec('def a():print("我是a")')#执行python代码

a =eval('1+2') #也是用来执行python代码的,只能执行一些简单的代码,比如运算,[] {}

print(a)

print(filter(lambdax:x>5,[12,3,12,2,1,2,35]))#把后面的迭代对象根据前面的方法筛选

print(map(lambdax:x>5,[1,2,3,4,5,6]))

print(max(111,12))#取最大值

print(min((1,2,3)))#取最小值

print(abs(-1))#取绝对值的

print(round(11.119999,3))#取几位小数

print(sorted([2,31,34,6,1,23,4]))#排序

python生成递归json_python函数、递归、json模块操作相关推荐

  1. [Python] 生成迭代器 iter() 函数

    Python 生成迭代器 iter() 函数 功能: 函数用来生成迭代器. 语法: iter(object[, sentinel]) object – 支持迭代的集合,对象,比如list,元组等. s ...

  2. python自动解析json_Python语言解析JSON详解

    本文主要向大家介绍了Python语言解析JSON详解,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. JSON 函数使用 JSON 函数需要导入 json 库:import jso ...

  3. python decimal类型转化_python的json模块,针对decimal类型直接dumps报错

    主要涉及的代码 def _iterencode(o, _current_indent_level): if isinstance(o, basestring): yield _encoder(o) e ...

  4. python 递归函数例子_python函数递归的几个例子

    斐波那契数列1,1,2,3,5,8,13,21--#!/usr/bin/env python# encoding: utf-8def fib(n):if n == 1 or n == 2:return ...

  5. python生成伪随机数的扩展库_python模块介绍-random:生成伪随机数

    概述 这个模块实现的伪随机数生成器. 对于整数,从区间选取.对于序列,随机元素. 在实线的,有功能来计算均匀分布,正态分布(高斯) ,对数正态分布,负指数,γ和β分布.对于生成的角度分布,冯·米塞斯的 ...

  6. python中的替换函数_python:替换模块类中的函数

    我试图替换类中定义的函数,以便在不更改实际代码的情况下修改其函数(如内部工作). 我以前从来没有这样做过,因此在更换它时遇到一些问题. 更改代码会让我访问python库中的包,这不是一个很好的选择. ...

  7. python 多层嵌套 json_python解析多层json操作示例

    本文实例讲述了python解析多层json操作.分享给大家供大家参考,具体如下: 原始文件内容: { "MaskPolygonItem": { "0": { & ...

  8. python中的decode函数在哪个模块_python3 中encode 和decode的使用方法。

    编码: 将文本转换成字节流的过程.即Unicode----------->特定格式的编码方式,产生特定的字节流保存在硬盘中(一般为utf-8格式). 解码: 将硬盘中的字节流转换成文本的过程.即 ...

  9. python3 json模块操作

    背景 json 是一种轻量级的数据交换格式.易于人阅读和编写,同时也易于机器解析和生成. 一般表现形式是一个无序的 键值对 的集合. 资料: 官方文档: https://docs.python.org ...

最新文章

  1. R语言ggplot2可视化移除数据中的NA值再可视化实战:消除图形中非常突出的NA柱状图、使用subset函数、使用drop_na函数
  2. php画中画,画中画功能 怎么将两个视频叠加播放,制作成画中画效果
  3. php计算200以内偶数的和并输出_如何用PHP实现数组中偶数位置元素大于奇数位置元素?...
  4. Java是先难后易吗_在解决问题的时候,是先难后易还是先易后难?
  5. 详解spring boot mybatis全注解化
  6. xCodeGhost 事件专题总结
  7. lucene in ation 第三章(1) sear…
  8. 长度测试仪:可测量网线/电话线/光纤等的长度
  9. RNA-seq 详细教程:分析流程介绍(1)
  10. 微信登录开发-java
  11. 收集需求的方法:群体创新技术
  12. 视频尺寸修改的小方法,同时处理多个视频,新媒体必备
  13. 技术人如何打造个人品牌,提高身价?
  14. 噢!查重原来是这样实现的啊!
  15. 杨米尔斯理论讲了什么
  16. mysql入门到精通_Mysql从入门到精通全文整理
  17. angular ui-grid 表格插件配置项
  18. WinForm(十五)窗体间通信
  19. 8-2 MVC(六大思维)
  20. HTML5期末大作业:购物商城网站设计——尤洪购物商城-功能齐全(30页) HTML+CSS+JavaScript 学生DW网页设计作业成品 实训大作业

热门文章

  1. 使用UltraISO从文件还原Linux操作系统ISO
  2. 自媒体必备工具合集分享
  3. 嵌入式状态机编程简介
  4. Java开发翻译系统
  5. 台式cpu温度过高的两个原因及解决方法
  6. 抖音用计算机怎么表白,抖音表白代码
  7. unity3d实现飞行模拟
  8. proteus各个版本下载
  9. web哪里有php文件,web文件管理器
  10. 【Hadoop】面试