'''
函数:
函数参数:必备参数、默认参数、不定长参数(元组不定长 字典不定长)
函数的定义不会被执行
函数的调用才会被执行
'''
# n1 = "name",10,20,{"name":"bd","id":2},{"age":18}
# zd = {"name":"bd","id":2}
# def fun(x,y=10,*args,**kwargs):
# print(x,end=" ")
# print(y,end=" ")
# print(args,end=" ")
# print(kwargs,end=" ")
# # fun(n1) # name 10 (20, {'name': 'bd', 'id': 2}, {'age': 18}) {}
# # fun("name",10,20,{"name":"bd","id":2},age=18) # name 10 (20, {'name': 'bd', 'id': 2}, {'age': 18}) {} name 10 (20, {'name': 'bd', 'id': 2}) {'age': 18}
# # fun("name",10,20,zd,age=18) # name 10 (20, {'name': 'bd', 'id': 2}) {'age': 18}
#
# # 想将字典里的可以通过字典拆包的形式,这里是指**zd,进行参数传递
# fun("name",10,20,**zd,age=18) # name 10 (20,) {'name': 'bd', 'id': 2, 'age': 18}
‘’’
闭包,外层函数,返回内层函数的函数体
函数里面没有return,函数就没有返回值,变量接收返回None
‘’’
# def funa():
# def fune():
# print(123)
# return fune
# a = funa()
# print(a) # <function funa.<locals>.fune at 0x000002DD4C9F09D8>
# a() # 123
'''
global:
不可变数据需要声明,如字符串、数值、元组等;
可变数据不需要声明,如列表、字典、集合。
nonlocal:
函数嵌套函数时,要使用外层函数变量时,需要声明
'''
# a = 12
# def fun():
# global a
# a += 1
# b = a
# def fune():
# global a
# a += 1
# nonlocal b
# print(a,b)
# return fune
# c = fun()
# c() # 14 13
‘’‘函数递归’’’
# def fun(x):
# if x == 1:
# return 1
# else:
# return x*fun(x-1)
# a = fun(3)
# print(a) # 6
‘’‘匿名函数:lambda’’’
# def f(x):
# return x
#
# # or
# f = lambda x:x
#
# print(f(2)) # 2
# print(list(map(lambda x:x*10,(1,2,3)))) # [10, 20, 30]
'''
变量存储数据,永久保存 文件,
open() 有返回值 返回文件本身
里面有三个参数:
文件路径:
绝对路径:(从磁盘出发)
【如】r'F:\03、Python技能提升'
最好加上r,防止字符串转义
相对路径:(从程序自身出发)
上一级路径 ../
同层级 ./或者不写
下一级路径 /
【注】程序和打开的文件在同一个最小文件夹里属于同层级,程序在的(即文件夹中箭头往左、往上)为上一级
【如】r'../基础语法/10、阶段小结(2)'
默认方式:
r:只读模式
w:先清空后写入,文件不存在则创建文件
a:追加模式,文件不存在则创建文件
+:更新模式,结合rwa模式
b:二进制打开模式
字符文件:txt,右键通过记事本打开能看懂的
字节文件:png、音频,二进制文件
编码格式
read() 从哪里读取内容 如下f.read()
tell() 查看光标
seek() 调整光标
'''
# # 只读模式r
# f = open('汉字.txt','r',encoding='UTF8') # 文件保存格式为UTF8,所以需要encoding='UTF8'声明编码格式为UTF8,使编码格式一致
# print(f) # <_io.TextIOWrapper name='汉字.txt' mode='r' encoding='UTF8'>
# print(f.read()) # 沉迷代码,渐感兴奋
# # 写入模式w
# d = open('写入与追加操作.txt','w',encoding='UTF8') # 先清空后写入,文件不存在则创建文件
# # 将内容写入文件,若有内容,则先清空后写入
# d.write('NIHAO')
# # 保存文件
# d.flush()
# 追加模式a
# d = open('./写入与追加操作.txt','a',encoding='UTF8')
# d.write(',Hello')
# d.flush()
# # 更新模式+
# e = open('更新模式.txt','w+',encoding='UTF8')
# e.write('NIHAO')
# e.flush()
# print(e.tell()) # 5
# e.seek(0) # 调整光标
# print(e.read()) # NIHAO
# e = open('更新模式.txt','bw+')
# # e.write('NIHAO') # 报错TypeError: a bytes-like object is required, not 'str'
# e.write(b'NIHAO') # b'NIHAO',b表示二进制
# e.flush() # 保存文件
# print(e.tell()) # 5
# e.seek(0) # 调整光标
# print(e.read()) # b'NIHAO'
'''
文件的写入:
write() 单行写入
writelines() 多行写入
文件的读取:
read() 读取全部,以字符串的形式返回
readline() 读取单条
readlines() 读取多条,以列表的形式返回,一行是一个元素
'''
# f = open('test.txt','a+',encoding='UTF8')
# f.writelines(['NIHAO\n','This Is Python\t','cool'])
# # 关闭,保存
# f.seek(0)
# print(f.readlines())
# f.close()
'''
with:上下文函数
执行完函数里面的代码,会自动关闭文件
f.closed:检测文件是否关闭
'''
# with open('test.txt','a+',encoding='utf8') as f: # 即f = open()
# f.seek(0)
# print(f.read())
# print(f.closed) # 可以检测文件是否关闭,若关闭则返回True
'''
IO文件流:创建在内存中的临时假文件 字符串 无编码格式限制
'''
# import io # 用来创建临时假文件
# string = io.StringIO() # 创建临时假文件
# string.write('123132')
# string.seek(0)
# print(string.read())
'''
IO:字节流:创建在内存中的临时假文件,字节数据
'''
# import io # 用来创建临时假文件
# bys = io.BytesIO() # 用来创建临时的二进制假文件
# bys.write(b'123132')
# bys.seek(0)
#
# print(bys.read())
# # or
# print(bys.getvalue()) # 读取二进制文件的方法getvalue()
'''
os 模块:
mkdir(目录名) 创建文件夹
rmdir(目录名) 删除文件夹
makedirs(目录\目录\目录) 创建多层文件夹
removedirs(目录\目录\目录) 删除多层文件夹
rename(文件名,新文件名) 更改文件名
system() 调用系统命令
listdir() 查看目录下面存在的文件,以列表形式返回
getcwd() 返回当前文件路径
remove() 删除文件
path.join() 拼接路径
【注】文件路径与上方的文件操作路径标准一致
'''
# import os
# os.mkdir("bd") #创建文件夹bd
# os.rmdir("bd") #删除文件夹bd
# os.makedirs(r'bd\chenhong') # 创建多层文件夹bd\chenhong
# os.removedirs(r'bd\chenhong') # 删除多层文件夹bd\chenhong
# os.mkdir(r'bd')
# os.rename(r'bd',r'ch') # 更改文件夹名
# print(os.listdir(path='./')) # 默认有path='./'
# print(os.getcwd()) # 打印文件路径
# os.remove('cc.txt') # 删除文件
# print(os.path.join('123','456')) # 拼接路径,123\456
'''
模块和包:
一个模块就是一个py文件
import 模块
包就是放了很多模块(py文件)的文件夹
from 包 import 模块
库:
同类型的py文件
'''
'''datetime模块'''
# import datetime
# print(datetime.datetime.now()) # 第一个datetime是包,第二个是模块,打印本地时间
#
# from datetime import datetime
# print(datetime.now())
if __name__=="__main__": # 自己本身运行,执行
print("我没有被当做模块调用")
else: # 被当做模块调用,执行
print("怎么还没有走,我好着急")
文章到这里就结束了!