Python3 输入和输出
输出
使用 print() 函数来输出,可以把字符串和数字一起输出,也可以把多个用逗号隔开的数据输出,并且它们之间会以空格隔开。
print("Hello, World!")
print("x = ", 5)
输入
使用 input() 函数来获取用户的输入。input() 返回一个字符串类型的值,如果需要其它类型的数据,需要进行类型转换。
name = input("What's your name? ")
age = int(input("How old are you? "))
文件操作
Python3 中的文件操作主要包括以下三个步骤:
打开文件
读写文件
关闭文件
打开文件
在 Python3 中,使用内置的 open() 函数来打开一个文件。open() 函数返回一个文件对象,它有一个方法 read() 用于读取文件内容。
# 打开一个文件
file = open("test.txt", "r")
# 读取文件内容
content = file.read()
# 输出文件内容
print(content)
# 关闭文件
file.close()
其中,open() 函数的第一个参数是要打开的文件名,第二个参数是文件打开的模式,常用的模式有:
r 只读模式
w 写入模式,会覆盖已有的文件
a 写入模式,在已有文件末尾追加内容
x 写入模式,创建新文件,如果文件已存在则报错
读写文件
使用文件对象的 read() 方法可以读取文件内容,使用 write() 方法可以向文件写入内容。
# 打开一个文件
file = open("test.txt", "w")
# 向文件写入内容
file.write("Hello, World!")
# 关闭文件
file.close()
关闭文件
使用完文件之后,应该及时关闭文件,释放文件对象占用的系统资源。
# 打开一个文件
file = open("test.txt", "r")
# 读取文件内容
content = file.read()
# 输出文件内容
print(content)
# 关闭文件
file.close()
OS
Python3 中的 OS 模块提供了访问操作系统底层的接口,包括文件操作、进程管理、环境变量等。使用 import os 即可导入该模块。以下是一些常用的 OS 模块函数:
os.getcwd():获取当前工作目录
os.chdir(path):将当前工作目录修改为指定路径
os.listdir(path):返回指定目录下的所有文件和目录的名称列表
os.mkdir(path):创建新目录
os.rmdir(path):删除指定目录
os.remove(path):删除指定文件
os.rename(src, dst):将指定文件或目录重命名为新名称
os.path.join(path1, path2, ...):将多个路径组合成一个完整路径
os.path.exists(path):判断指定路径是否存在
os.path.isfile(path):判断指定路径是否为文件
os.path.isdir(path):判断指定路径是否为目录
使用方法示例:
import os
# 获取当前工作目录
print(os.getcwd())
# 获取指定目录下的所有文件和目录的名称列表
print(os.listdir('./'))
# 创建新目录
os.mkdir('./new_dir')
# 将指定文件或目录重命名为新名称
os.rename('old_name.txt', 'new_name.txt')
# 判断指定路径是否存在
if os.path.exists('./new_dir'):
# 删除指定目录
os.rmdir('./new_dir')
Python3 错误和异常
在 Python3 中,程序的运行过程中可能会出现各种错误和异常。当程序出现错误时,Python 解释器会停止运行并显示错误信息,这些错误信息被称为异常。异常可以分为两类:
语法错误:代码不符合 Python 语法规范,无法正常解释执行。
运行时错误:代码符合 Python 语法规范,但在执行过程中出现了错误。
语法错误
语法错误在程序编写过程中就能被发现,通常是因为代码书写不符合 Python 语法规范导致的。例如,忘记加冒号、括号不匹配等等。下面是一个语法错误的例子:
# 缺少冒号
if True
print("Hello, World!")
执行该代码会报如下错误:
File "test.py", line 2
if True
^
SyntaxError: invalid syntax
运行时错误
运行时错误是在程序运行过程中出现的错误,通常是因为程序处理异常情况不正确或者因为一些不可预知的原因导致的。下面是一些常见的运行时错误:
NameError:尝试访问一个不存在的变量或函数。
TypeError:类型错误,例如把一个字符串和一个数字相加。
ValueError:值错误,例如将错误类型的参数传递给函数。
ZeroDivisionError:除数为零错误。
IOError:I/O 错误,例如文件不存在或无法打开。
IndexError:索引错误,例如下标超出范围。
KeyError:键错误,例如访问字典中不存在的键。
AttributeError:属性错误,例如访问不存在的属性。
处理异常可以使用 try...except 语句。try 语句块中放置可能出现异常的代码,except 语句块中放置处理异常的代码。下面是一个处理运行时错误的例子:
try:
num1 = int(input("Enter a number: "))
num2 = int(input("Enter another number: "))
result = num1 / num2
print(result)
except ZeroDivisionError:
print("Cannot divide by zero!")
except ValueError:
print("Invalid input!")
在该例子中,try 语句块中有可能出现两种异常:除数为零错误和值错误。如果捕获到除数为零错误,会输出 "Cannot divide by zero!",如果捕获到值错误,会输出 "Invalid input!"。
自定义异常
在 Python3 中,可以自定义异常类型,以便更好地处理异常。自定义异常需要继承自内置的 Exception 类。下面是一个自定义异常的例子:
class MyException(Exception):
pass
try:
raise MyException("This is my exception!")
except MyException as e:
print(e)
在该例子中,定义了一个名为 MyException 的异常类型,继承自 Exception 类。在 try 语句块中抛出了一个 MyException 异常,输出了异常信息 "This is my exception!"。
python3面向对象
在 Python3 中,面向对象编程是一种重要的编程方式。面向对象编程的核心是类和对象。类是一种抽象的数据类型,它包含了属性和方法,用于描述一类对象的共同特征。对象是类的实例化,是一个具体的数据类型,它有自己的状态和行为。下面是一个简单的类和对象的例子:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def say_hello(self):
print("Hello, my name is %s, I'm %d years old." % (self.name, self.age))
p1 = Person("Alice", 20)
p2 = Person("Bob", 25)
p1.say_hello()
p2.say_hello()
在该例子中,定义了一个名为 Person 的类,它有两个属性 name 和 age,以及一个方法 say_hello。__init__ 是一个特殊的方法,用于初始化对象的属性。创建了两个 Person 类型的对象 p1 和 p2,并分别调用了它们的 say_hello 方法,输出了它们的属性值。
python3命名空间/作用域
在 Python3 中,命名空间是用于存储变量名称和值之间的映射关系的容器。Python3 中有三种命名空间:
内置命名空间:包含了 Python3 内置的函数和变量。
全局命名空间:在程序的顶层定义的变量和函数,对于整个程序都是可见的。
局部命名空间:在函数内部定义的变量和函数,只对函数内部可见。
命名空间的作用域是指变量的可见范围。在 Python3 中,有四种作用域:
内置作用域:内置命名空间中定义的变量和函数。
全局作用域:在程序的顶层定义的变量和函数。
局部作用域:在函数内部定义的变量和函数。
嵌套作用域:在闭包函数中定义的变量和函数。
Python3 中的命名空间和作用域是基于 LEGB 原则的:
L:局部作用域
E:闭包函数外的函数中的局部作用域
G:全局作用域
B:内置作用域
在访问变量时,Python3 会优先查找局部作用域,然后依次查找闭包函数外的函数中的局部作用域、全局作用域和内置作用域。下面是一个 LEGB 原则的例子:
x = 10
def f1():
x = 20
def f2():
x = 30
print(x)
f2()
print(x)
f1()
print(x)
在该例子中,定义了三个函数,分别是 f1、f2 和全局作用域。首先调用 f1 函数,其中定义了一个局部变量 x,值为 20。然后调用 f2 函数,其中定义了一个局部变量 x,值为 30。在 f2 函数内部输出 x,输出结果为 30。然后在 f1 函数内部输出 x,输出结果为 20。最后在全局作用域中输出 x,输出结果为 10。