python函数
2019-07-20 15:08:11 0 举报
AI智能生成
python文件操作及函数(一)
作者其他创作
大纲/内容
python 函数
函数基础
定义
def func( )
def 关键字 -- 定义 func 函数名 -- 和变量定义规则一样 () 必须要写格式 : 声明语句结束
def my_len() 函数体
函数的返回值
注意事项
return 的内容返回给了调用者
return 返回多个内容时返回的是元组形式
关键字 return
返回
def func( ): print(123) ruturn 456
有return
返回 return后的值
没return
返回 None
位置传参
参数的优先级
位置参数>动态位置参数>默认参数(关键字参数)>动态关键字参数
def func(a): print(a)func(1)
a -- 形参1 -- 实参
形参
函数定义的时候叫做形参 # 位置参数 # 默认参数 # 混合参数
实参
函数调用的时候叫做实参 # 位置参数 # 关键字参数 # 混合参数
传参
将实参传递给形参的过程叫做传参
位置参数
默认参数
关键字参数
混合参数
函数的动态参数
*args
接收动态的位置参数
万能的(接受任意多个)的位置参数
在函数定义的时候叫做聚合
在函数中叫做打散
**args
接收动态的关键字参数
输出的是字典
万能传参
函数的注释
name.__doc__
查看函数注释
name.__name__
查看函数命名
名称空间
命名空间分类
内置空间
全局空间
当前py文件需要开辟的空间存放在全局空间
局部空间
函数中开辟的空间就是局部空间
加载顺序
内置空间 - 全局空间 - 局部空间
取值空间
局部空间 - 全局空间 - 内置空间(找不到就报错)
作用域
内置空间 + 全局空间
函数的嵌套
def func(): a = 1 def foo(): b = 2 print(b) print(a) def f1(): print(b) return f1() return foo()print(func()) # 2 1 2 None
函数的互相引用
def func(): a = 1 foo() print(a)def foo(): b = 2 print(b)func() # 2 1
global
声明修改的是全局变量的值
nonlocal
文件操作
文件基础
创建一个文件\"asdf\"
f = open(\"asdf\
open( )
# 打开
file
# 文件的位置(路径)
mode
# 操作文件的模式
encoding
# 文件编码方式
f
# 文件句柄
文件的打开和关闭
with open(\"asdf\
文件的操作模式
r rb r+
w wb w+
a ab a+
文件具体操作
f = open(\"文件的路径(文件放的位置)\
f 是文件句柄
文件详解
路径
绝对路径
例如: f = open(\"F:\\s24\\day08\\asdf\
相对路径
例如: f = open(\"../day03/asdf\
路径转义
路径引号前加 r
文件操作的模式
r w a
r
读文本
read( )
全部读取
read(3)
看文件的前三个字符
readline( )
读取一行(自带换行符)
readlins( )
一行一行读取存放在列表
w
步骤
只能写字符串
1.先清空文件
2.写入文件
a
追加
在源文件的基础上进行添加
小技巧
解决大文件
for i in f: print(i)本质就是一行一行读取
操作模式 w a 检测有文件就操作没有就创建操作
rb wb ab
rb
读字节
wb
ab
r+ w+ a+
r+
读写
错误的方式是写读应先读后写
w+
清空文件 写入
读取内容(默认为空)
a+
先写后读
注意点
在r+模式下. 如果读取了内容. 不论读取内容多少. 光标显示的是多少. 再写入 或者操作文件的时候都是在结尾进行的操作.
其他操作
光标
tell( ) 查看光标位置
返回的是字节数
seek( ) 移动光标
seek(3) 按照字节进行移动(具体移动参照编码集)
文件修改
创建一个新文件
将文件中的内容替换
替换后的内容写入新文件
改变文件名
示例
with as
with open(\"文件路径\
优点
可以同时打开多个文件
能够自动关闭文件
函数名的第一类对象及使用
函数名可以当做值被赋值
def func(): print(1)print(func)a = funca() # <function func at 0x000001A24F8E9B70> 1
函数名可以当做元素存放在容器中
函数名可以当做另一个函数的参数
def func(f): f()def foo(): print(123)func(foo) # 123
函数名可以当做返回值
def func(): def foo(): print(123) return fooa = func()a() # 123
格式化f\"\"
f\"\"格式化的作用
填充字符串
填充变量
填充计算公式
填充表达式
填充大括号
迭代器
可迭代对象
可迭代对象 使用灵活
查看是否可迭代
官方声明:只要具有.__iter__方法的就是可迭代对象
方法一
list.__iter__()
方法二
查看源码
方法三
print(dir( ))
优点及缺点
使用灵活
可以直接查看值
缺点
消耗内存
文件句柄\"f\"是个迭代器
f = open(\"xxxx\
将可迭代对象转换成迭代器
for循环的本质
s = \"12345\"new_s = s.__iter__()while True: try: print(new_s.__next__()) except StopIteration: break
递归
满足这两个条件才是有效递归
自己调用自己
有明确的终止条件
递与归
递
一直执行直到碰到结束条件
归
从结束条件开始往回退
官方声明最大层次为1000实际测试997 - 998
生成器
生成器与迭代器的区别
迭代器是python中内置的一种节省空间的工具
生成器的本质就是一个迭代器
迭代器是python自带的
生成器是程序员自己写的
函数名 + ( )就是产生一个生成器
def func(): if 3>2: yield \"你好\" if 4>2: yield \"我好\" yield \"大家好\"g = func() print(g.__next__())print(g.__next__())print(g.__next__())
优点及注意事项
输出方式
def foo(): for i in range(10): pass yield i count = 1 while True: yield count count += 1g = foo()print(next(g)) # ---- 推荐使用print(next(g))print(next(g))print(next(g))print(next(g))
坑
最后输出时调用函数要找变量接收否则会循环输出
生成器应用场景
def func(): lst = [] for i in range(100000): lst.append(i) return lstprint(func())
def func(): for i in range(100000): yield ig = func()for i in range(50): print(next(g))
yield from
将一个可迭代对象的元素逐个返回
def func(): lst1 = [\"牛羊配\
所以循环第一个列表直到全部打印再循环第二个
推导式
列表
循环模式
[i for i in range(20)]
筛选模式
[i for i in range(20) if i % 2 == 0]
[变量(加工后的变量) for循环 加工方式]
g = (i for i in range(20))print(next(g))print(next(g))print(next(g))
转换成列表
list((i for i in range(20)))
(变量(加工后的变量) for循环 加工条件)
字典
{i:i+1 for i in range(10)}
{i:i+1 for i in range(10) if i % 2 == 0}
{键:值 for循环 加工条件}
集合
{i for i in range(10)}
{i for i in range(10) if i % 2 == 0}
{变量(加工后的变量) for循环 加工条件}
内置函数一
exec() 执行字符串类型的代码
以上两个函数过于强大 工作中禁止使用
help() 函数用于查看函数或模块用途的详细说明
int() 函数用于将一个字符串或数字转换为整型
float() 函数用于将整数和字符串转换成浮点数
bin() 将十进制转换成二进制
oct() 将十进制转换成十六进制字符串并返回
pow() 求x**y次幂
bytes() 用于不同编码之间的转化
ord() 输入当前编码的位置数字找出其对应的字符
repr() 返回一个对象的string形式
0 条评论
回复 删除
下一页