Python 基础速成
语法上的主要差异
比起c、go等语言来说,python使用**:和缩进**代替{}。
这个表格叫AI提供的,随便看看就好:
| 维度 | C 语言 | Python |
|---|---|---|
| 代码块标识 | 用 {} 包裹代码块,缩进仅为美观 | 用 缩进(通常 4 个空格)标识代码块,无 {} |
| 语句结束 | 必须用 ; 结尾 | 换行即结束,无需 ;(一行多语句时才用) |
| 变量声明 | 需显式指定类型(如 int a;) | 动态类型,无需声明(如 a = 1 自动识别为整数) |
| 类型系统 | 静态强类型,编译时检查类型 | 动态强类型,运行时检查类型 |
| 内存管理 | 手动 malloc/free 管理堆内存 | 自动垃圾回收(引用计数 + 分代回收) |
| 循环语法 | for(初始化; 条件; 更新) 风格 | for 元素 in 可迭代对象 风格(更简洁) |
| 函数定义 | 需指定返回值和参数类型(如 int add(int a, int b)) | 无需类型声明(如 def add(a, b):) |
| 数据结构 | 需手动实现数组、链表等 | 内置列表 []、字典 {}、元组 () 等高级结构 |
Python 基础速成(核心知识点)
注释
单行:# 啊啊
多行:
python
"""
注释
注释
"""变量与数据类型
python
# 常用类型
a = 1 # 整数
b = 3.14 # 浮点数
c = "hello" # 字符串(单双引号均可)
print (para_str)
d = True # 布尔值(True/False)
e = [1,2,3] # 列表(可变,有序)
f = (1,2,3) # 元组(不可变,有序)
g = {"name":"Tom", "age":18} # 字典(键值对)
h = {1,2,3} # 集合(无序,去重)多行字符串
两边使用三个引号(无论单双)
python
para_str = """这是一个多行字符串的实例,
会读入换行
可以使用制表符 TAB ( \t )。
也可以使用换行符 [ \n ]。
"""
print (para_str)执行结果:
这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( )。
也可以使用换行符 [
]。字符串其他用法
r"字符串" 忽略转义符
略
f"字符串" 用于替换其中的变量
python
>>> name = 'Runoob'
>>> f'Hello {name}' # 替换变量
'Hello Runoob'
>>> f'{1+2}' # 使用表达式
'3'
>>> w = {'name': 'Runoob', 'url': 'www.runoob.com'}
>>> f'{w["name"]}: {w["url"]}'
'Runoob: www.runoob.com'类型占位符/格式符
类似c语言那样的东东
python
print ("我叫 %s 今年 %d 岁!" % ('小明', 10))| 符 号 | 描述 |
|---|---|
| %c | 格式化字符及其ASCII码 |
| %s | 格式化字符串 |
| %d | 格式化整数 |
| %u | 格式化无符号整型 |
| %o | 格式化无符号八进制数 |
| %x | 格式化无符号十六进制数 |
| %X | 格式化无符号十六进制数(大写) |
| %f | 格式化浮点数字,可指定小数点后的精度 |
| %e | 用科学计数法格式化浮点数 |
| %E | 作用同%e,用科学计数法格式化浮点数 |
| %g | %f和%e的简写 |
| %G | %f 和 %E 的简写 |
| %p | 用十六进制数格式化变量的地址 |
辅助指令:
| 符号 | 功能 |
|---|---|
| * | 定义宽度或者小数点精度 |
| - | 用做左对齐 |
| + | 在正数前面显示加号( + ) |
| <sp> | 在正数前面显示空格 |
| # | 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X') |
| 0 | 显示的数字前面填充'0'而不是默认的空格 |
| % | '%%'输出一个单一的'%' |
| (var) | 映射变量(字典参数) |
| m.n. | m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话) |
Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。
运算符
- 算术:
+ - * / % **(幂) //(整除) - 比较:
== != > < >= <= - 逻辑:
and or not - 成员:
in(如3 in [1,2,3]→True)
控制结构
python
# 条件判断
age = 18
if age < 18:
print("未成年")
elif age == 18:
print("刚成年")
else:
print("成年")
# for循环(遍历列表/字符串等)
for i in range(5): # range(5) → 0,1,2,3,4
print(i)
# while循环
count = 0
while count < 3:
print(count)
count += 1函数
python
def greet(name, greeting="你好"): # greeting有默认值
return f"{greeting}, {name}!" # f-string格式化字符串
print(greet("Tom")) # 输出:你好, Tom!
print(greet("Jerry", "Hi")) # 输出:Hi, Jerry!
# 可变参数
def sum_all(*args): # *args接收任意数量位置参数
return sum(args)
print(sum_all(1,2,3,4)) # 输出:10列表与字典操作
python
# 列表
nums = [1,2,3]
nums.append(4) # 末尾添加 → [1,2,3,4]
nums.pop() # 末尾删除 → [1,2,3]
nums[0] # 索引访问 → 1
nums[1:3] # 切片(左闭右开)→ [2,3]字典
python
person = {"name":"Tom", "age":18}
person["name"] # 按键访问 → "Tom"
person.get("gender", "未知") # 安全访问(无key返回默认值)
person.keys() # 所有键 → dict_keys(['name', 'age'])
person.values() # 所有值 → dict_values(['Tom', 18])面向对象入门
python
class Person:
# 构造函数(初始化时调用)
def __init__(self, name, age):
self.name = name # self代表实例本身
self.age = age
# 方法
def introduce(self):
print(f"我叫{self.name},今年{self.age}岁")
# 实例化
tom = Person("Tom", 18)
tom.introduce() # 输出:我叫Tom,今年18岁异常处理
python
try:
1 / 0 # 会触发ZeroDivisionError
except ZeroDivisionError as e:
print(f"出错了:{e}")
finally:
print("无论是否出错都会执行")文件操作
python
# 读取文件(with自动关闭文件)
with open("test.txt", "r", encoding="utf-8") as f:
content = f.read() # 读取全部内容
print(content)
# 写入文件("w"覆盖,"a"追加)
with open("test.txt", "w", encoding="utf-8") as f:
f.write("Hello, Python!")