python学习笔记3

#文件操作
f=open("test1.txt",'w',encoding='utf-8')   #写
f.write('人闲车马慢,')
f.write('路遥星亦辞。')
f.close()

f=open("test1.txt",'a',encoding='utf-8')   #追加,默认追加到同一行
f.write('\n穷且益坚,不坠青云之志。')
f.close()

f=open("test1.txt",'r',encoding='utf-8')   #读
#f.read()    #全读  输出内容且体现数据类型

#print(f.readline())   # 读一行  只输出内容不体现类型
#print(f.readline())   #读下一行

#print(f.readlines()) #全读   内容自动加入列表中
#可以自己用电脑逐个输出看看  注意txt只能存字符
f.close()

#利用循环全读
f=open("test1.txt",'r',encoding='utf-8') 
for line in f:
    print(line.strip())
f.close()

f=open('..\TT.txt','r',encoding='utf-8')
for i in f:
    print(i.strip())   #print自带换行,文本本身就有换行,strip()消除了文本中的换行
f.close()
人闲车马慢,路遥星亦辞。
穷且益坚,不坠青云之志
落霞与孤鹜齐飞,
秋水共长天一色。
<>:27: SyntaxWarning: invalid escape sequence '\T'
<>:27: SyntaxWarning: invalid escape sequence '\T'
C:\Users\Administrator\AppData\Local\Temp\ipykernel_17344\1185739893.py:27: SyntaxWarning: invalid escape sequence '\T'
  f=open('..\TT.txt','r',encoding='utf-8')
#注意:w模式下,如果文件不存在,自动创建文件,且每一次open都会清空文件中的内容   追加mode'a'存在的意义
f=open('test1.txt','w',encoding='utf-8')
f.write('星垂平野阔,月涌大江流。\n')
f.close()
f=open('test1.txt','r',encoding='utf-8')
print(f.readline())
f.close()
#‘人闲车马慢...’消失了

#列表中内容写入文件
lst=['长亭外,','古道边,','芳草碧连天。']
f=open('..\TT.txt','w',encoding='utf-8')
for item in lst:
    f.write(item+'\n')
f.close()
f=open('..\TT.txt','r',encoding='utf-8')
print(f.read())
f.close()

with open('test1.txt','r',encoding='utf-8') as f:  #自动关闭文件,不用自己输入f.close()
    print(f.read()) 
星垂平野阔,月涌大江流。

长亭外,
古道边,
芳草碧连天。

星垂平野阔,月涌大江流。
<>:12: SyntaxWarning: invalid escape sequence '\T'
<>:16: SyntaxWarning: invalid escape sequence '\T'
<>:12: SyntaxWarning: invalid escape sequence '\T'
<>:16: SyntaxWarning: invalid escape sequence '\T'
C:\Users\Administrator\AppData\Local\Temp\ipykernel_17344\1696212294.py:12: SyntaxWarning: invalid escape sequence '\T'
  f=open('..\TT.txt','w',encoding='utf-8')
C:\Users\Administrator\AppData\Local\Temp\ipykernel_17344\1696212294.py:16: SyntaxWarning: invalid escape sequence '\T'
  f=open('..\TT.txt','r',encoding='utf-8')
#读取非文本文件要加上'b'
with open("祁煜.jpeg",'rb') as f:
    for line in f:
        print(line)
#读取到的不是图片而是编码
'''
#文件的复制:从原文件中读取内容写入新路径中
with open("祁煜.jpeg",'rb') as f1,\
     open("../qiyu.jpeg",'wb') as f2:
         for line in f1:
             f2.write(line)
'''
b'RIFF\xe2\xdd\x00\x00WEBPVP8 \xd6\xdd\x00\x00p\xf9\x06\x9d\x01* \x03\xc5\x06>\xddh\xadP(\xbf\xb74\xa7r{;\xf0\x1b\x89enk\xb9\xee\xa9\n'
b'ZM\xfd\'\xea\xd1\xc9w\xc3\xa6\xf8\xed\xee.\x9aK\xc2_\xf0\xfcR=o\xfd\xdf\xb0\x0f\x86g\x81\xfa\x04\xf9zg\x19G?\xfd\xbe\x99\x7f\xb7s\xeak\xa1\x8b\xd9\xdf\x14{\xb1\xeb\xd3\xc5\xbcy?\x83\xd1S\xbc\xf6\xd8\xe6;\xff\xd7\xb3\x0f\xe2[\xdc7y\xe3\x99^\xc2\xfb\x97\xff\xef\xa8/\x95\xff\xa5\xff\xe7\xfe_\x9a\xbf\x9d\xfe\xc3\xff_\xf7>\xdb\x9f\xed\xddq\xffVx\xff\xc5\x7f\xff\xd3/)~\xbc\x7f\xff\xe3\xf7\xc7\xe7\x9f\xed\xfa\xf4\xad\xf3\x8f\x98g\xfa\xfb\r\xf7\xbf\xcf\xdf\xd7?J\x8f\xeaz\xb8y2\x7f\xf9\xea{\xf3\x8f\xffe{Z\xe3\xd8\x1e\x98\xf5\xc7u\xee<\x85\xd2\x8c\x1cp1gp\xc5\x91\xedT\xcf\xe3{\xac\xee\x1dO\t\xd7\x19\xc7E\x87\x95\x1cT\x10\xbd\xe1\xd1\x03\xed\x8e\xd4\xde\xcd\x86\x18~N\xd1\x00.\x9b\xc4\r\x0b"Zr\xd7)\x08\xef\x8e{\xc8\xca\xeeS\x1f\xcb\xc8q\xb6\xc6\xf2\x01\xcb\xb0\x1c\x94eVZ\xb5\xa3@\xaa\xa8*k\x86\x82|`\x84Z\xc5\xfe\xc1)\xa5\x1f\xea{\x0b9-\xdbCR\x1bw(\x00d<\x00\xfaH\xb1f\r\xf0\x89\xbcg\xe4\xf3\x90\xd8\xbeN\xfdR\x97Z\xccLT\xdb\xf2\xc7\xe6\x11\xa3\xeflX\xa3`"u\x03\x0bE\x1a\xb45z6\xfb\x87\xf8\xc3q\xd2\xad\xe3\x00BuH\xcbb\xb0\\\xb9J,\xa7\xcc\x84\xc9,\xfcR\x95.4\x99\xdd\xdc\xd5\xbfo\xab\x1ck\x8a\n'
b"N;He\xb0\x01\x90\xed\xfa\x89M\x08\xd7\xab'?\x8b\xc2\x1b \xdc&\x1a\xa1\xc2\x99\xe5\xba\x89\x92\xe0\xe1\x88\x89<\x92o\xa4\x08\xa0\xfc]a\r]G\xa1klw(O[\x9c\xf8F2z@u\xb7/\xf6\x0e\x85p<QrL\xf8E\x85\x12\xbd\xa6\xba\xeb\x0b\xd4\xd49H\xab6\x19\xefz\xc6\x8f\x969\x9c\xaa\xfeL\xc2\x05\xf5\xd9\xaa\x9av\xbe\x87\x18:\xac;\xed0\x84\xecm4\xa7\xfe\x9d@w,'\xc6Q9\xb1\x14\x07H(H\x92\x85\x0e\xf90T\xa3\x02\xdd\xf1\xf2\x13\xb9\xf0,-\x06\x14 \xf1m\x8a\x83\xbbR/3\x0b*\x08\xe7\xa8\xfex\xcf\xe6\x18^\xbcZ\xaa\x93\xbao$u\x02hE\x1f\xaa\x15Y1p\xa4\xeck\xb2\x17\xac\x91\xf6\x96\x92K\x9eAqFce\x83\xe8x\xe9]V\x05\x11\xaa\x03\xc7bQ\xd8q\x88R\x99\xd7\xd3\xc4\xc5\x88R\x87\xfb\xdfF\xaa\xaeR\xd8\xf9\xeau\xbd[\xbf\xe3\xf9A/\xbb\x12z\xc2k\n"
b'\xbdzX9\xc7\xf4\x1eB\x87\xe59\xd0\xf4\xa6\xd92\xa5 \x9e\x1f\xf0_\xf0\xb9\xbd\xe1I\x96\xf9#JT\x83Y\xee\x94"\x04\x8e\xd5\x98\xe4\xc2h\xb0\xea\xad\x84}\xf9\x85[\x82\xd8\t\xd3)\x13\xc1_\x82Q\xa5"V\xdf*%\xfa\x98\x81\xfb\x10c\xdf.\x19\x04l*{|=\x13n\x8a\xc6\xa1\xc8_x\xfb3\x97\x18\x97\xc4\xc3\x89P\xe7\xa4W\xf9\r(\x97\xf8\xc0\xf4\x1b\x16\x15lp\x8b\xe0\xea*\xb6\xfd\'r\xd6[9\xf4\x18\xca\xfa\xe7\xff,\xba\x9f\xc2\xf0\x05\xe5c\xeb\xebM\xfd\x8e\xe6\x0e\xbc\xb0\xf2 \xba\x12\xe0T\xc4w\xd1\xd9V\xdd\x81F\xb0\xfe\xf2,\'\xc5\x9c.\xa58\xe4%L\xf3\xa1u\x98\xeez"qq\x07\x82\xc5L\xb8\x92&\xdf9\xaf\xd7\x13YZ|\xc80\xab+\xe4-\x0b\xa9\xb8O\x0e\xddB\x18\n'....
#文件的修改
with open("名单.txt",'r',encoding='utf-8') as f1,\
     open("新名单.txt",'w',encoding="utf-8") as f2:
         for item in f1:
             if item.startswith('周'):
                 item=item.replace('周','z')
             f2.write(item)
with open("新名单.txt",'r',encoding="utf-8") as f:
    print(f.read())
import os   #应如何操作系统相关的模块
#time.sleep(3)  #让程序休息3秒,有充足时间人眼观察文件的变化
#然后删除原文件
os.remove('名单.txt')
#time.sleep(3)
#把副本文件重命名
os.rename("新名单.txt","名单.txt")
毛泽东
z恩来
朱德
刘少奇
尧
舜
禹
商汤
z文王
z武王
#函数
'''
函数:对某一个特定的功能或者代码块进行封装,在需要使用该功能的时候直接调用即可

定义:
def 函数的名字():
    被封装的功能或者代码->函数体

调用:
函数的名字()

参数:
1,形参,在函数定义的时候,需要准备一些变量来接收信息:位置参数(按照位置依次声明变量),默认值参数(默认值参数放在位置参数之后,否则报错),关键字参数
       
2,实参,实际在调用的时候传递的信息:位置参数(根据位置传递参数),关键字参数(按照参数名字进行传参),混合参数(位置参数放在关键字参数之前,否则报错)
注意:实参在执行的时候,必须保证形参有数据
    顺序:位置参数>*>默认值参数>**
'''
def sum(x,y):  #此时x,y为形参
    return x+y
print(sum(1,2))  #1,2为实参  位置参数
print(sum(x=1,y=2))  #1,2为实参  关键字参数

print('\n')
def st(name,age,sex='男'):   #sex为默认值参数
    print(name,age,sex)
st('张三',18)
st('李四',19)
st('秋香',18,'女')

def st1(*message): 
    print(message)     #*形参==位置参数的动态传参,接收的信息会被统一放在一个元组里
st1("张三")
st1("秋香",18)
st1('李四',19,'男')

print('\n')
def st2(**message):   
    print(message)     #**形参==关键字参数的动态传参,接收的信息会被统一放在一个字典里
st2(name="张三")
st2(name="秋香",age=18)
st2(name='李四',age=19,sex='男')

print('\n')
def fun(a,b,*d,c='yuyu',**f):   #顺序
    print(a,b,c,d,f)
fun(1,2,3,4,5,6,c='YY',name='祁煜',age=24)

print('\n')
def fun1(*a,**b):
    print(a,b)
fun1()
fun1(1)
fun1(1,2,3,4,name='yuyu')
fun1(1,2,3,name='yuyu',age=24)
3
3


张三 18 男
李四 19 男
秋香 18 女
('张三',)
('秋香', 18)
('李四', 19, '男')


{'name': '张三'}
{'name': '秋香', 'age': 18}
{'name': '李四', 'age': 19, 'sex': '男'}


1 2 YY (3, 4, 5, 6) {'name': '祁煜', 'age': 24}


() {}
(1,) {}
(1, 2, 3, 4) {'name': 'yuyu'}
(1, 2, 3) {'name': 'yuyu', 'age': 24}
#*还可以在实参位置,把列表打散成位置参数进行传递    **还可以在实参位置,把字典自动转化成关键字参数进行传递
lst=[1,2,3,4,5,6]
def fun(*a):
    print(a)
fun(*lst)
(1, 2, 3, 4, 5, 6)
#函数的返回值:函数执行之后,会给调用方一个结果,这个结果就是返回值
#函数执行到return会立即终止,后续代码不会执行   return后可以不接数据,只用于终止代码
#return三种用法:1,其后什么也不接  2 ,只接一个返回值  3,不止接一个返回值,外界收到的是元组,并且该元组存放所有返回值
def sum(x,y):
    return x+y    #return默认为None
a=sum(1,2)
print(a)
3
#内置函数:直接能拿来用的函数
'''
print()
input()
bool()
int() 转十进制
bin() 转二进制
oct() 转八进制
hex() 转十六进制
...
'''
print(int(0b101))
print(int(0o17))
print(int(0x1f))
print(bin(0x1f))

#sum min max pow
print(pow(2,3),2**3) #pow==**
lst=[1,2,3,4,5]
print(max(lst))      #max求最大值
print(min(lst))      #min求最小值
#print(sum(lst))      #sum求和

#list() tuple() set()
a=[1,2,3]
print(set(a))

#slice()
s=slice(0,6,1)
print('yuyuyu'[s])

#format 格式化
a=3
print(format(a,'b'))  #b二进制 o八 x十六
print(format(a,'08b')) #得到由0补充的八位二进制

#ord() chr()  python内存unicode
a='祁'
print(ord(a)) #文字->编码位置
print(chr(31041))

#all any
print(all([0,'','\0']))
print(all({1,'1','haha'}))
print(any((0,1)))

#enumerate
lst=[1,2,3,4,5]
for item in enumerate(lst):
    print(item)  #得到索引+元素
for index,item in enumerate(lst):
    print(index,item)  #得到索引+元素

#hash()
s="鱼鱼是条小鱼"
print(hash(s)) #将s通过哈希计算得到一串数字->转化成内存地址,然后进行数据的存储->字典(集合)哈希表
print(id(s))

#help dir
#print(help(str))  #源码   
print(dir(str))    #能执行的操作
5
15
31
0b11111
8 8
5
1
{1, 2, 3}
yuyuyu
11
00000011
31041
祁
False
True
True
(0, 1)
(1, 2)
(2, 3)
(3, 4)
(4, 5)
0 1
1 2
2 3
3 4
4 5
-6551927535043464978
1913932580464
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

#函数的嵌套
#作用域
a=1  #全局变量
def fun(): #fun()是全局函数
    b=2  #局部变量
    print(a)
fun()
#print(b)   报错

def fun1():
    fun()  #函数的调用
fun1()

print('\n')
def fun3():
    def fun4():  #函数的嵌套   fun4()是局部函数
        pass
#eg
def yuyu():
    print(1)
    def yu():
        print(2)
    print(3)
    yu()
    print(4)
yuyu()
1
1


1
3
2
4
#局部变量(函数)在外部使用
def fun():
    q=0
    return q
q=fun()
print(q)

def fun1():
    def inner():
        print(123)
    print(inner)
    return inner
p=fun1()
print(p)
p()
#<function fun1.<locals>.inner at 0x000001BD9F4D2840>
#   函数   fun1的局部作用域里的inner 在内存地址0x000001BD9F4D2840处
print('\n')
#由上述可以得出结论:1,函数可以作为返回值进行返回  2,函数可以作为参数进行相互传递  
#函数名实际上就是一个变量名都是表示一个内存地址
#代理模式
def haha(x):   #x接收
    x()
def xixi():
    print("嘻嘻嘻")
haha(xixi)

print('\n')

def haha(x):
    print(x)
def xixi():
    print("嘻嘻嘻")
haha(xixi())
0
<function fun1.<locals>.inner at 0x000001BD9F4D1BC0>
<function fun1.<locals>.inner at 0x000001BD9F4D1BC0>
123


嘻嘻嘻


嘻嘻嘻
None
#global
a=10
def func():
    global a  #在局部引入全局变量,能改变全局变量
    a=20
func()
print(a)

#nonlocal
def fun1():
    a=10
    def fun2():
        nonlocal a  #引入外层局部变量:一层一层往外找局部变量直到找到,不会找全局变量
        a=20
    fun2()
    print(a)
fun1()
20
20
#闭包 内层函数对外层局部变量的使用,内层函数被称为闭包
def func():
    a=10
    def inner():   #inner()此时为闭包,1,可以让一个变量(a)常驻于内存,2,避免全局变量被修改
        nonlocal a
        a+=1
        print(a) 
        #或 return a
    return(inner)
ret=func()   #ret=inner
ret()
11
#装饰器:本质是一个闭包,在不改变调用的原有函数的情况下,给函数前后添加新代码
'''
前提:
1,函数可以作为参数被调用
2,函数可以作为分会只进行返回
3,函数的名称可以当成变量一样进行赋值操作
'''
def schedule(due):
    def inner():
        print('起床')
        due()
        print('上床')
    return inner
def study():
    print("上课吧你")
def leisure():
    print("看小说")
study=schedule(study)
leisure=schedule(leisure)
study()
leisure()
print('\n')
@schedule    #==work=schedule(work)
def work():
    print("上班吧你")
@schedule
def leisure():     #leisure=schedule(leisure)
    print("看电影")
work()
leisure()
起床
上课吧你
上床
起床
看小说
上床


起床
上班吧你
上床
起床
看电影
上床

#捉虫:前提:2,函数可以作为返回值进行返回

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值