python函数和文件操作

三目运算: 语法糖

只适用于简单的if else

执行代码1 if 条件 else 执行代码
age = 19
print('你可以进入网吧,成年人欢迎') if age >= 18 else print('未成年,好好学习,天天向上')
======================================================
列表推导式 快速生成一个列表

格式1 [值1 循环 if 条件]
格式2 [值1 if 条件 else 值2 循环]
# 1-10之间的奇数乘以10,偶数乘以100
list1 = []
for i in range(1,11):
if i % 2 == 1:
list1.append(i*10)
else:
list1.append(i*100)
print(list1)

list2 = []
=====================================
列表推导式 快速生成一个列表

格式1 [值1 循环 if 条件]
格式2 [值1 if 条件 else 值2 循环]
# 将大写的key对应的value改为张三,其余的改为李四
dict1 = {'a':10,'B':20,'c':True,'D':'hello world','e':'python教程'}
dict2 = {}
for key,value in dict1.items():
if key.isupper(): # 是大写
dict2[key] = '张三'
else:
dict2[key] = '李四'
print(dict2)

dict3 = {key:'张三' if key.isupper() else '李四' for key,value in dict1.items()}
print(dict3)
========================================================
函数 : 封装代码,达到可以重复使用的效果  # 可以理解为定义公式

函数的定义
def 函数的名称(参数): 参数可有可无,根据实际情况去设置
代码块
函数名()

函数定义好了之后,实际上是没有任何意义,只有当我们调用了函数,函数才有了意义

# 定义函数
def print_demo():
# 函数的功能
print('wangyanming')

# 调用函数
print_demo()

函数参数

函数定义的时候,有几个形参,那么调用函数的时候,就传几个实参
# 计算任意两个数之和
def func1(a,b): # a,b就是参数,变量
# 函数功能 ,计算两个数之和
c = a +b
print('%s+%s=%s'%(a,b,c))

func1(3,2) # 实参
func1(1001040014,4510120201)
======================================
返回值 ,函数的结果


return 结果

返回值的作用,返回函数的结果,便于之后再去使用,默认是None
调用函数的时候,就能够拿到函数的返回值
如果想要在控制台看到返回值,就需要打印函数的调用

返回值只能有一个,如果有多个,可以放在序列当中

return也是函数的出口,当函数遇到return之后,它下面的代码就不会去执行了
def func1(a,b):
c = a + b
# print(c)
return c
aa = func1(1,3)
print(aa*4)
==========================
函数嵌套

在函数的内部,可以去调用其它的函数


函数定义以后,不会有任何的实际意义,当调用函数之后,函数才有了意义
def func1():
print('func1....')
func2() # 调用func2函数

def func2():
print('func2....')

def func3():
print('func3....')
func1() # 调用func1函数

func3()
===========================================
函数的作用域 函数的作用范围

全局变量: 定义在函数外部的变量,任意函数都能使用

局部变量: 定义在函数内部的变量,只能在函数内部使用

函数内部:能够访问全局变量,但是不能修改全局变量
函数内部,可以修改局部变量
def func2():
a = 11
a += 1
print(a)
func2()
=======================
global 修改全局变量

如果想要在函数内部修改全局变量,则需要用global修改
global一般就在函数开头的位置,一定要放在修改全局变量的上方
a = 10

def func1():
global a # 告诉程序,修改全局变量a
a += 1 # 修改全局变量
print(a)

func1()
print(a)
===================
缺省初始(默认参数): 在定义函数的时候就已经给了默认值,调用函数的时候
可以不传值,如果下传值用的就是当前的默认值
如果传了值,就用传递过来的值,将原来的默认值进行覆盖

默认参数要放在普通参数的后面

定义了几个形参,那么调用函数的时候就传几个值
传递的值和形参的位置是一一对应的,也就是说,第一个值传给第一个形参
第二个值传给第二个形参....
# sort()
list1 = [1,5,3,6]
list1.sort(reverse=True) # reverse=False 也是内置
print(list1)
==========================
不定长参数: 在不确定函数需要多少个形参的时候
不定长参数: 可以接收多个值

*args args可以是任意的变量名,但是*号不能掉
默认以元组的形式接收传递的值
可以不传值
要放在形参的后面

**kwargs kwargs可以是任意的变量名,但是**不能掉!!
默认以字典的形式接收传递的值
可以不传参
要放在形参的后面


*args必须在**kwargs的前面
def func2(a,b,*args,**kwargs):
print(a)
print(b)
print(args)
print(kwargs)

func2(2,6,2,3,4,name='课耗',age='14')
============================================
变量引用: 我们在进行赋值操作的时候,并不是把之赋给了变量而是
把当前值所在的内存地址给了变量,变量保存的就是数据的内存地址
a = 10
print(id(a))
a = 20
print(id(a))
====================================
递归: 函数反复调用自己
num1 = 1 # 初始值
jiecheng = 1 # 初始的阶乘值
while num1<=5:
jiecheng *= num1
num1 += 1
print(jiecheng)
===================
匿名函数: 没有名字的函数

lambda 参数:功能
自带返回值
a = lambda a,b:a+b
print(a(2,3))
=====================
文件操作步骤: 打开文件,读该写,关闭文件

文件路径:
相对路径 : 有一个参照物(本文件)
.\ 当前目录
..\ 当前目录的上一级目录

绝对路径: 从当前电脑的盘符出发,具体到某一个文件夹当中的某个文件
# 在08_函数晋级文件夹里面创建一个tast.txt文件
file2 = open(r'..\08_函数晋级\tast.txt','w')

file2.close()
========================
w: 文件不存在,会新建文件 如果文件存在,会将原有的内容进行覆盖
r: 文件不存在,会报错,如果文件存在,不支持写入,只能读取文件内容
a: 文件不存在,会新建文件 ,在原有的内容的基础上追加内容,不能读
b: 二进制操作文件 当内容不是文本的时候,用b

w+ 可读可写 文件不存在,会新建文件 如果文件存在,会将原有的内容进行覆盖
r+ 可读可写 文件不存在,会报错
a+ 可读可写 文件不存在,会新建文件 ,在原有的内容的基础上追加内容
wb 二进制方式写入
rb 二进制方式读
ab 二进制追加
wb+ 二进制方式读写
rb+ 二进制方式读写
ab+ 二进制方式读写
# 打开文件
file = open('test.txt','w')

# write() 写入
file.write('每天星期天,要放假了好开心')

# # read() # 读取
# print(file.read())

# # 关闭文件
file.close()
============================
write()  写入   只能写入字符串

writelines() 写入,可以写入字符串,也可以写入序列,前提是序列里面的内容是字符串

read() 读取全部内容
readline() 一次读取一行内容
字符编码   编码表,相当于一个字典
open(文件路径,操作模式,字符编码) utf-8 万国语言 GBK
如果说你写入文件的时候,指定了字符编码的格式,那么读取文件的时候,也需要指定
==========================
上下文管理: 不需要手动关闭文件,代码执行完毕,自动关闭文件

with open as 变量名:
with open('test.txt','w+') as f1:
# 写入内容
f1.write('几哈就赛事,卡收款进度')
# 刷新,缓存到磁盘当中,进行保存
f1.flush()
# tell() 获取当前光标的位置
# print(f1.tell())
# seek() 手动调整光标的位置
f1.seek(0)
print(f1.read())
# 光标,指针
=======================
os模块. python标准库
这个命令会了,那么linux命令就有很多相同的地方
# 导入os模块
import os

# 显示当前目录下的所有文件名称,并存储到列表中
print(os.listdir())

# getcwd() 查看当前文件路径 绝对路径
print(os.getcwd())

创建多个文件
for i in range(1,11):
with open('素材/文件自动化素材{}.mp4'.format(i),'wb'):
pass
posted @ 2022-06-13 19:26  冬天不下雨  阅读(27)  评论(0编辑  收藏  举报