定义在函数内、在class
的方法内的变量叫做局部变量。
在模块内、在所有函数外面、在class
外面,这就是全局变量。
局部变量只有在当前的函数作用域内,才可以进行调用;而全局变量可以在任意一个函数中进行调用。局部变量通常用作数据临时存储,而全局变量可以长期保持数据(py文件运行时)。
在函数内部使用变量时,会遵循“就近原则”,即:先找局部变量,如果找不到,再找全局变量,最后是系统内置的;在函数外部时,即会调用全局变量,如果找不到,再找系统内置的。
可变:列表、字典、集合
不可变:数值(整数、浮点数)、布尔、字符串、元祖
递归就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身,每调用一次就进入新的一层。递归函数必须有结束条件。
函数的文档说明是给程序员看的,方便程序员快速了解这个函数的组成与作用。
def test1():
print("test1开始调用")
print("test1结束调用")
def test2():
print("test2开始调用")
test1()
print("test2结束调用")
test2()
# test2开始调用
# test1开始调用
# test1结束调用
# test2结束调用
定义test1、test2两个函数,调用test2,在test2内部调用test1。
my_str = "hello"
my_list = ["hai", 23]
def test1():
print(my_str)
print(my_list)
test1()
# hello
# ['hai', 23]
可以在函数内部使用全局变量。
my_str = "hello"
my_list = ["hai", 23]
def test2():
my_str = "world"
my_list = ["hai", "world"]
test2()
print(my_str)
print(my_list)
# hello
# ['hai', 23]
在函数中无法直接修改全局变量。
my_str = "hello"
my_list = ["hai", 23]
def test3(my_str, my_list):
my_str = "world"
my_list = ["hai", "world"]
test3(my_str, my_list)
print(my_str)
print(my_list)
# hello
# ['hai', 23]
将全局变量作为参数传入,在函数中也无法直接修改全局变量。
引用传参传递的是一个变量在内存中存储的地址,实际传递的是地址。
# 阶乘函数
def Fact(n):
if n == 1:
return 1
return n * Fact(n-1)
文件就是你存放在电脑里的东西,包括文档、图片、音乐、视频等文件。
我们可以通过文件来存储东西。
打开文件,操作文件,关闭文件。
变量名 = open(文件名, 模式)
f = open("test.txt", "r")
r是以只读方式打开文件,r+是可读写方式打开。
r+必须基于r的基础上进行操作,即:文件必须存在。
w是只写方式打开文件,w+是可读可写方式打开。
使用a模式,对文件进行追加。
变量名.close()
f = open("test.txt", "r")
content = f.read()
f.close()
需要备份文件时,需要复制原文件。
将原文件的数据读取出来,并写入到新文件中。
文件定位就是获取当前读写的位置。
在读写的过程中,如果想知道当前的位置,可以使用tell()来获取。
使用w方式对打开的test.txt文件,进行操作,写入数据。
f = open("test.txt", mode="w")
f.write("wow,so beautiful!")
f.close()
使用r方式对打开的test.txt文件,进行操作,读取数据。
可以,传入的参数表示需要读取多少字节的数据。
一次只能读取一行数据,可以用来控制读取的数据。
在Python的os
模块中。
rename(需要修改的文件的名称,新的文件的名称)
需要提前导入os
模块。
可以使用os
模块中remove()
完成对文件的删除操作。
remove(需要删除的文件名)
Python标准库os
中的remove()
函数不能删除具有只读属性的文件。