day 11文件操作

1.recode
1.匿名函数

函数名= lambda 参数列表:返回值
匿名函数也是函数。
func1 = lambda a,b:pint(a,b)
函数体是一条语句,并且这条语句是有结果的(赋值语句没有结果)
2.变量的作用域

全局变量:没有声明在函数或类中的变量;从声明开始到文件结束,任何位置。
局部变量:声明在函数或者类中的类的变量。从声明开始到函数、类结束
global:在函数中声明一个全局变量/想要在函数中修改一个全局变量的值
nonlocal: 在局部的局部修改局部变量的值的声明
3.函数作为变量

声明函数就是在声明一个类型是function的变量。变量能做的,函数都能做。

函数名:一个函数
函数名():调用函数,得到返回值
函数作为参数:闭包
函数作为返回:装饰器(python特色)
4.函数的调用

调用过程就是一个压栈的过程,调用函数的时候系统会自动在栈区间开辟空间存储数据(变量)。

a,b=10,20
def fun1(a,b):
a,b=b,a
fun1(a,b)
print(a,b) #10,20

a,b=10,20
def fun1():
global a,b
a,b=b,a
fun1()
print(a,b) #20,10
5.递归函数:

自己调用自己的函数,循环能做的递归都可以做,但是能用循环的就不要用递归。

2.模块的使用
1.import
模块:python中一个py文件就是一个模块。
使用模块:可以通过import或者from-import在一个模块中去使用另一个模块的内容
语法:
import 模块名--->将模块中的所有的内容导入,并且可以在当前模块中通过“模块名. ”的方式去使用导入模块中的内容
from 模块名 import 变量1,变量2--->将模块中所有的内容都导入,但是只能使用导入的变量。
from 模块名 import * ---->将模块中所有内容模块导入,所有的全局变量
补充:
import 可以检查被导入的内容是否已经导入过,如果导入过,不会重复导入,导入多次,只执行一次。多种导入的效果可以同时生效(如重命名,导入的部分变量可直接使用)
代码执行到import的时候,会将import后面的模块的内容执行一遍

2.重命名
import 模块名 as 模块的新名字-->使用时用新名字
import test1 as TS
from 模块名 import 变量名 as 新名字,变量名2 as 新名字
from test1 import name as newname,name2 as newname2
3.选择性导入(阻止导入)
1.语法
if name=="main":
代码块
说明:
if name=="main":--->固定写法("main"+enter快捷键)
代码块-->执行当前模块时代码块可以执行,被别人导入这个模块时,不会导入这个代码块
2.name
每个模块都有这个属性,这个属性的默认值是当前模块对应py文件的文件名,当前模块正在被执行时,系统会自动将模块的name属性变成'main'

import shiyan12
print(shiyan12.name) #shiyan12
print(name) #main
**3.什么时候使用模块
将具有相同的功能的函数和数据封装到一起

3.迭代器
1.什么是迭代器(itemr)
迭代器是python中一种数据类型。属于序列。没有具体的字面量,可以将其他的序列转成迭代器:
语法:
iter(序列)
next(迭代器) 或者迭代器.next()
2.迭代器特点
只能通过next方法一个一个的获取迭代器中的元素(栈),取出后迭代器中就不存在这个元素了,相当于pop()。

iter1=iter("abcdefghijklmnopqrstuvwxyz")
print(iter1)
print(next(iter1))
print(next(iter1))
print(next(iter1))
print(next(iter1))
取完后在去会报错:StopIteration(没有找到结果)
3.遍历迭代器

for n in iter1:
print(n)
4.生成式和生成器
1.什么是生成器(generator)
生成器就是迭代器,但迭代器不一定是生成器
生成式就是生成器的一种特殊形式:(变量 for 变量 in 序列)o

gel=(x for x i range(10))
print(gel)
print(next(gel))
其他写法
ge1=(x for x in range(20))
ge2=(x for x in range(20) if x%2)
ge3=([x,x**4] for x in range(20))
生成式()中的相当于函数,需要时才执行,一次next()执行循环直到得到一个结果。
2.生成器就是函数体中有yield关键字的函数
函数中只要有yield,那么调用这个函数不再是执行函数且获得返回值,而是得到一个生成器
通过next获取生成器的元素时,会执行生成器对应的函数的函数体,执行到yield为止,并返回yield后面的值,然后保存当前结束位置,下次获取元素时接着上一次位置执行,执行到yield,取完在去会报错,StopIteration

def a():
for n in range(2):
yield n
if n>=0:
yield n
b=a()
print(next(b))
print(next(b))
print(next(b))
print(next(b))

0 0 1 1

生成器可以当成序列来使用
生成器a(),m=a(),n=a()生成了2个序列m,n

def a():
for n in range(2):
yield n

b=a()
d=a()
print(next(d))
print(next(b))
5.文件操作
使用本地文件可以做数据的持久化(本地化)--->数据库文件\txt文件\json文件\plist文件\二进制文件

1.文件操作--读写操作
读:取出文件中的数据
写:将数据写到文件中
所有的文件的操作过程:打开文件-->操作文件-->关闭文件

2.打开文件和关闭文件
1.打开文件
open(file)
返回值是打开的文件

file-->文件路径,
绝对路径(不推荐使用):
相对路径:./相对路径(相对当前py文件对应的文件夹)
./--->代表当前文件夹,
./某文件A/--->代表当前文件夹中文件A的子目录
../--->代表当前文件的上一层
mode-->文件打开方式(不同的操作对应不同的打开方式)
"r"-->以只读的形式打开文件,得到文本
"rb"/""br"-->读,得到的数据是二进制形式
"w"-->以写的形式打开文件
"wb"/bw"-->将二进制数据写入文件
"a"-->写操作,追加
encoding-->文本的编码方式
utf—8:几乎支持所有的语言文字
gbk:只支持英文
2.读文件
文件对象.read() 返回读到的内容(字符串或者二进制)
文件对象.redline() 读一行
文件对象.readlines()返回一个列表,列表中的内容是文件中的每一行
读文件会有位置信息,读完文件后再读就是空
3.写文件
"w"-->将字符串写入文件中,会覆盖原来的内容
文件对象.write("")
"a"-->追加内容(文件末尾)

4.关闭文件
文件对象.close()

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 226,679评论 6 526
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 97,610评论 3 411
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 174,336评论 0 372
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 62,146评论 1 306
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 71,001评论 6 405
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 54,522评论 1 318
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 42,633评论 3 433
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 41,777评论 0 283
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 48,291评论 1 329
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 40,272评论 3 352
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 42,410评论 1 363
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,977评论 5 354
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 43,671评论 3 342
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,086评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 35,299评论 1 278
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,991评论 3 385
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,397评论 2 369

推荐阅读更多精彩内容

  • 一、复习 1.匿名函数函数名 = lambda 参数列表:返回值参数列表: 变量名1,变量名2函数体是一条语句,并...
    Sakura_flower阅读 276评论 0 5
  • 1. recode 1. 匿名函数 格式:lambda 参数列表: 返回值 常用情况:函数名 = lambda...
    EryangZ阅读 111评论 0 0
  • 雪在那边玩的太疯狂 忘了我俩的约会时长 风儿还在送信的路上 鸟儿还在整理着戎装 月儿也在收拾着闺房 朋友圈却已炸开...
    相遇天际阅读 234评论 0 0
  • 1. 认识这个词(基础篇) 英英释义:include something as a relevant elemen...
    小小_d574阅读 77评论 0 0
  • 有句话说的好,一日之计在于晨。今天是星期六,本来是六点钟就醒了,但是由于自己的惰性,心里又暗示自己,今天是...
    一只温顺的老虎阅读 516评论 0 0