Python基本语法
简介
- Python是一种高级编程语言,由Guido van Rossum在1980年代末和1990年代初设计开发。它被设计为一种易读易学的语言,具有清晰简洁的语法和强大的功能。Python支持面向对象、命令式、函数式和过程式编程范式。
- Python是一种解释型语言,不需要编译代码,就可以立即运行代码。
- Python支持动态类型,变量类型可以根据需要自动地分配。
- Python支持自动内存管理,无需手动管理内存,系统会自动分配和释放内存
- Python支持丰富的库和工具,包括网络编程、数据库访问、图形用户界面开发、科学计算、Web开发、游戏开发等。
python解释器
Python解释器是一种能够执行Python程序代码的软件工具。它负责将编写的Python代码转换成计算机可以理解和执行的指令。Python语言本身是一种高级语言,需要通过解释器将其转换为底层机器语言或者其他中间代码来实现程序的运行。
Python解释器有多种实现:
-
CPython
CPython是Python语言的官方解释器,大多数情况下提到的Python解释器指的就是CPython。它是用C语言实现的,将Python代码解释成字节码并执行。 -
Jython
Jython是Python语言在Java平台上的实现,它将Python代码编译成Java字节码执行。 -
IronPython
IronPython是Python语言在.NET平台上的实现,它能够与.NET平台的各种库和工具进行交互。 -
PyPy
PyPy是一个追求性能的Python解释器,使用了Just-In-Time(JIT)编译技术。
注释
Python中单行注释以#
开头,多行注释可以用三个双引号"""
或三个单引号'''
括起来。
缩进
python中使用缩进来表示代码块,缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。
多行语句
Python中,如果一行代码过长,可以使用反斜杠\
来实现多行语句。
total = item_one + \
item_two + \
item_three
数据类型
数据类型 | 描述 | 例子 |
---|---|---|
int | 整数类型,表示整数 | 42, -10 |
float | 浮点数类型,表示有小数点的数值 | 3.14, 2.0 |
bool | 布尔类型,表示逻辑值 True 或 False | True, False |
str | 字符串类型,用单引号或双引号包围的文本数据 | ‘Hello’, “Python” |
list | 列表类型,有序的集合,可以包含不同类型的元素 | [1, 2, 3], [‘apple’, ‘orange’] |
tuple | 元组类型,类似列表,但元素不可修改 | (1, 2, 3), (‘a’, ‘b’, ‘c’) |
dict | 字典类型,使用键值对存储数据 | {‘name’: ‘Alice’, ‘age’: 30} |
set | 集合类型,无序且元素唯一 | {1, 2, 3}, {‘apple’, ‘orange’} |
bytes | 字节串类型,不可变的字节序列,用于处理二进制数据 | b’hello’, b’\x00\xFF’ |
其中,可变类型有list
、dict
、set
,不可变类型有int
、float
、bool
、str
、tuple
、bytes
。
可变类型的值可以被修改,而不可变类型的值一旦创建就不能被修改。
可以使用type()
函数查看变量的类型。
a = 42
print(type(a)) # <class 'int'>
数据类型转换
显示类型转换
Python中可以使用int()
、float()
、str()
等函数进行类型转换。
num = 42
str_num = str(num)
float_num = float(num)
隐式类型转换
python中,不同数据类型在进行运算时,会自动转换为相同类型,不需要显示转换。通常较低的数据类型会自动转换为较高的数据类型,例如整数除以浮点数,结果为浮点数。
num = 42
float_num = 3.14
result = num / float_num # 结果为浮点数
运算符
Python支持多种运算符,包括算术运算符、比较运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符等。
算术运算符
运算符 | 描述 | 例子 |
---|---|---|
+ | 加法 | 3 + 2 = 5 |
- | 减法 | 3 - 2 = 1 |
* | 乘法 | 3 * 2 = 6 |
/ | 除法 | 3 / 2 = 1.5 |
// | 整除 | 3 // 2 = 1 |
% | 取模 | 3 % 2 = 1 |
** | 幂 | 2 ** 3 = 8 |
比较运算符
运算符 | 描述 | 例子 |
---|---|---|
== | 等于 | 3 == 2 |
!= | 不等于 | 3!= 2 |
> | 大于 | 3 > 2 |
< | 小于 | 3 < 2 |
>= | 大于等于 | 3 >= 2 |
<= | 小于等于 | 3 <= 2 |
赋值运算符
运算符 | 描述 | 例子 |
---|---|---|
= | 赋值 | a = 2 |
+= | 加等于 | a += 2 |
-= | 减等于 | a -= 2 |
*= | 乘等于 | a *= 2 |
/= | 除等于 | a /= 2 |
//= | 整除等于 | a //= 2 |
%= | 取模等于 | a %= 2 |
**= | 幂等于 | a **= 2 |
&= | 按位与赋值 | a &= 2 |
|= | 按位或赋值 | a |= 2 |
^= | 按位异或赋值 | a ^= 2 |
>>= | 右移赋值 | a >>= 2 |
<<= | 左移赋值 | a <<= 2 |
逻辑运算符
运算符 | 描述 | 例子 |
---|---|---|
and | 与 | True and True |
or | 或 | True or False |
not | 非 | not True |
位运算符
运算符 | 描述 | 例子 |
---|---|---|
& | 按位与 | 5 & 3 = 1 |
| | 按位或 | 5 | 3 = 7 |
^ | 按位异或 | 5 ^ 3 = 6 |
~ | 按位取反 | ~5 = -6 |
<< | 左移 | 5 << 2 = 20 |
>> | 右移 | 5 >> 2 = 1 |
成员运算符
运算符 | 描述 | 例子 |
---|---|---|
in | 是否在序列中 | ‘a’ in ‘abc’ |
not in | 是否不在序列中 | ‘d’ not in ‘abc’ |
变量
Python中,变量名必须以字母或下划线开头,且不能以数字开头。
name = 'Alice'
age = 30
输入
input()
函数
input()
函数用于从控制台获取用户输入,并将其转换为字符串类型。
name = input("Please enter your name: ")
print("Hello, " + name + "!")
sys.stdin.readline()
方法
sys.stdin.readline()
方法用于从标准输入(即控制台)获取一行输入,并将其转换为字符串类型。
import sys
name = sys.stdin.readline().strip()
print("Hello, " + name + "!")
sys.stdin.read()
方法
sys.stdin.read()
方法用于从标准输入(即控制台)获取所有输入,并将其转换为字符串类型,包括换行符。
import sys
name = sys.stdin.read().strip()
print("Hello, " + name + "!")
文件输入
Python中可以使用open()
函数打开文件,并使用read()
方法读取文件内容。
with open('input.txt', 'r') as f:
content = f.read()
输出
print()
函数
print()
函数用于输出内容到控制台。
print("Hello, world!")
sys.stdout.write()
方法
sys.stdout.write()
方法用于将内容输出到标准输出(即控制台)。
import sys
sys.stdout.write("Hello, world!\n")
文件输出
Python中可以使用open()
函数打开文件,并使用write()
方法写入文件内容。
with open('output.txt', 'w') as f:
f.write("Hello, world!\n")
文件操作
open()
函数
open()
函数用于打开文件,并返回一个文件对象,可以用于读取或写入文件内容。
f = open('file.txt', 'r')
file.txt
:文件名。r
:打开文件的方式,r
表示以只读方式打开文件,w
表示以可写方式打开文件,a
表示以追加方式打开文件。
read()
方法
read()
方法用于读取文件内容,并返回字符串类型。
f = open('file.txt', 'r')
content = f.read()
f.close()
write()
方法
write()
方法用于写入文件内容。
f = open('file.txt', 'w')
f.write('Hello, world!\n')
f.close()
with
语句
with
语句可以自动关闭文件,避免忘记关闭文件造成资源泄露。
with open('file.txt', 'r') as f:
content = f.read()
os
模块
os
模块提供了一系列提供了许多用于与操作系统进行交互的方法。
文件和目录操作
-
os.getcwd()
: 获取当前工作目录的路径。 -
os.chdir(path)
: 改变当前工作目录到指定路径。 -
os.listdir(path='.')
: 返回指定目录下的所有文件和目录名。 -
os.mkdir(path)
: 创建目录。 -
os.makedirs(path)
: 递归创建多层目录。 -
os.rmdir(path)
: 删除目录(要求目录必须为空)。 -
os.removedirs(path)
: 递归删除多层空目录。
路径操作
os.path.exists(path)
: 判断指定路径(文件或目录)是否存在。os.path.isfile(path)
: 判断指定路径是否为文件。os.path.isdir(path)
: 判断指定路径是否为目录。os.path.join(path1, path2, ...)
: 将多个路径组合成一个路径。os.path.abspath(path)
: 返回路径的绝对路径表示。
系统信息
os.name
: 获取操作系统的名称。os.environ
: 获取系统环境变量。os.system(command)
: 执行系统命令。
文件操作
os.rename(src, dst)
: 重命名文件或目录。os.remove(path)
: 删除文件。os.stat(path)
: 获取文件或目录的状态信息。
其他
os.urandom(n)
: 返回一个包含n个随机字节的字节串。
模块
导入模块
- 使用
import
语句导入模块。
import math
print(math.pi)
- 使用
from
语句导入模块中的函数或变量。
from math import pi
print(pi)
- 使用
as
语句给模块指定别名。
import math as m
print(m.pi)
- 使用
*
语句导入模块中的所有函数或变量。
from math import *
print(pi)
一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身运行时执行。
if __name__ == '__main__':
# 程序块
pass
模块搜索路径
Python解释器会搜索模块的路径,并从这些路径中导入模块。
模块搜索路径存储在sys.path
变量中,可以通过sys.path.append()
方法添加路径。
import sys
sys.path.append('path/to/module')
模块搜索路径的优先级:
- 当前目录。
- 环境变量
PYTHONPATH
。 - 内置的模块路径。
包
Python中,包是一种组织模块的机制。
包可以包含模块、子包、子包中的模块等。
包的组织形式:
package/
__init__.py
module1.py
module2.py
subpackage/
__init__.py
module3.py
__init__.py
文件:该文件可以为空,但必须存在,否则Python解释器会认为该目录不是一个包。module1.py
文件:该文件包含模块1的代码。module2.py
文件:该文件包含模块2的代码。subpackage
目录:该目录包含子包。subpackage/__init__.py
文件:该文件可以为空,但必须存在,否则Python解释器会认为该目录不是一个包。subpackage/module3.py
文件:该文件包含子包中的模块3的代码。
导入包中的模块:
import package.subpackage.module3