1. 修改文件
补充上次没洗完的:
想要修改某个文件里一块地方, 可以使用 seek 函数找到位置 write 函数修改.
是不是觉得这很简单?
但是如果你这样操作很可能会出现乱码.
因为由于字节数的不同, 编码的不同, 你把你写的东西直接添加进去对原来的位置不是往后移, 而是在原来的位置上直接覆盖, 所以可能会出现乱码.
但是为什么 word,wps 可以直接修改文件?
wps,word 会把文件从内存中全部加载到硬盘上, 而不是在内存中修改, 你有可能会发现当我们打开一个很大的文件时 wps.word 打开都很慢, 因为把文件从内存中加载到硬盘里需要时间, 文件越大需要的时间越多!
2. 函数
函数是将一组语句通过一个名字 *(函数名) 封装起来, 要想执行时, 只需要调用其名字即可.
def fun():
操作
主要作用是为了减少代码重复, 使程序变得可扩展, 易于程序的维护
下面我们看看什么是形参实参?
def fun(x,y): #这其中 x,y 是形参
操作
- # 函数调用
- fun(5,6) #实参
python 中的默认参数 (举例生活中我们需要填一些东西, 他老让我们写国籍, 在我们的学校里都基本是国人, 所以我们不想写国籍了怎么办?
用默认参数直接默认填写)
- # 默认参数
- def fun(name,age,loc="中国"):
操作
当我们调用时如果不写这个参数他会默认是中国
- fun("卢本伟",99) #我们没有写 就显示中国
- fun("卢本伟",99,us)# 如果写了就显示什么
注意的是默认参数必须放在位置参数的后面!!!!!!
python 中的关键参数 (必须放在未知参数后面)
def fun(name,age,country):
操作
- # 函数调用
- fun("卢本伟",country="日本",age=99)
python 中非固定参数
- def send(msg,*user):
- for u in user:
- print("报警",u)
调用
方式一
send("报警",'alex','daliu')
其实写了 * user 后, 参数就不固定了看你需要多少!
方式二
send('报警',*['alex','daliu'])
注意啦::: 若 * user 后面还有参数怎么写呢 上面的写法是会报错的.
举例子:
def send(name,*user,age):
操作
调用: send("卢本伟",'alex','daliu',age=99)
这样子是不会报错的
可能大家也注意到了 *user 就是穿了一个元祖 / 列表
那可以传递字典吗?
当然是可以的..
- name={
- "01":"卢姥爷",
- "02":"开挂最牛逼"
- }
- def send(msg,**name):
操作
函数调用: send("报警",**name)
2.1 返回值
函数中止并返回结果, 未指定的返回 none, 函数永远只返回一个值
若出现这种: return name,age 是返回了两个值吗?
不是的, 系统会将他们当做元祖显示出来.
也可以直接返回元祖例: return [name,age]
2.2 局部变量, 全局变量
局部变量: 函数里面定义的变量, 只在函数内部有效.
执行就近原则!
- name=['alex','black','peiq']
- def change():
- def name[2]
- name[1]='黑'
- print(names)
- # 函数调用
- change()
- print(names)
结果是: name=['alex', 黑]
为什么可以改变全局变量的值?
这其实只是把 name 的地址当做是一个整体, 但其内部是可以修改的!
那种的是可以修改的?
就像这种一串串的可以修改 什么列表呀 字典丫的
2.3 嵌套函数
就是函数里面嵌套函数嘛
要说的只有一点非常的重要
- def change() :
- print("a")
- def change1() :
- print("b")
函数调用
change()
这个结果会显示什么?
结果: a
因为 change1 没有被调用所以不会执行
2.4 匿名函数
- fun=lambda x,y :
- x*y
调用: print(fun(2,5))
就这个例子自行体会, 要知道的是在匿名函数最骚的操作可能就是三元运算了. 循环什么都不行,
2.5 高阶函数
满足条件:
1. 函数中参数是另一个函数 (就是参数是函数)
- def a(x,y):
- return x*y
- def b(x):
- return x
- f=b(a) #函数 a 被当做参数传入
- print(f(2,8))
2. 返回值中返回有函数
例: return abs,x,y
来源: http://www.bubuko.com/infodetail-2702786.html