1. 规范
- Python 严格区分大小写
1.1 命名规范
- 模块名和包名:小写,单词之间用
_分割 - 类名:首字母大写
- 文件名:全小写
- 函数名一律小写,单词之间用
_分割 - 变量命名
- 变量名只能包含字母、数字和下划线(不能包含空格)
- 变量名全小写,单词之间用
_分割
- 常量全大写,单词之间用
_分割
1.2 下划线
- 变量
- 成员变量,单下划线
_开头 - 私有变量,双下划线
__开头
- 成员变量,单下划线
- 函数
- 成员函数,单下划线
_开头 - 私有函数,双下划线
__开头
- 成员函数,单下划线
- 模块
- 单下划线
_开头的模块:通常表示内部模块,不打算被外部直接使用(不应该直接导入) - 双下划线
__开头的模块:通常用于特殊用途,如__init__.py文件
- 单下划线
其他:
专有变量:以__开头 __结尾,一般为 Python 自有变量
单个下划线_ 也可用作临时变量,表示该变量不重要
for _ in range(10):
print("Hello")
忽略返回值:
_ = some_function()
1.3 代码规范
- 正确的缩进,避免逻辑错误
- 分号
;用于分隔同一行中的多条语句 - 换行用于分隔不同的语句,无需分号
空一行:用于类成员函数之间,或者用于区分不同逻辑块
空两行:类与类,类与函数,函数与函数之间
2. 基本语法
2.1 缩进
代码缩进在 Python 中是一种语法
2.2 关键字
| keywords | description |
|---|---|
| None | 特殊常量,表示空值或缺失值 |
| def | 定义函数 |
| pass | 占位语句,不执行任何操作 |
| raise | 手动抛出异常 |
| with | 用于简化异常处理,确保正确地释放资源 |
查看 Python 关键字
import keyword
keyword = keyword.kwlist
print(f'len(keyword): {len(keyword)}')
print(f'keyword: {keyword}')
len(keyword): 35
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class',
'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global',
'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return',
'try', 'while', 'with', 'yield']
2.4 类型
Python 是强类型语言,这意味着对象的类型是无法改变的,即便其值是可变的
- 强类型语言
result = "number" + 5
# 会抛出TypeError
# 要类型转换
result = "number" + str(5)
- 类型不能更改
如果有一个指向某种类型对象的变量,你不能改变这个对象的类型,但是你可以改变这个变量所指向的对象
3. 数据类型
- Python 是动态类型语言(类型推断)
type() 查看数据类型
print(type("Hello"))
3.1 布尔型(bool)
布尔值:True / False
若值并没有明确地使用布尔值 False 表示,下列情况也会被认为是 False:
布尔值 False
空 None
整数 0 0
浮点数 0 0.0
空串 ''
空列表 []
空元组 ()
空字典 {}
空集 set()
示例:
some_list = []
if not some_list:
print("it's empty!")
3.2 整型(int)
数中的下划线
使用下划线 _ 作为数位分隔符:1_000_000
3.3 浮点数(flot)
无论是哪种运算,只要有操作数是浮点数,Python默认得到的总是浮点数
任意两个数相除时,结果总是浮点数,即便这两个数都是整数且能整除
print(4 / 2)
# 输出 2.0
3.4 字符串(str)
单/双引号都行(便于做嵌套)
字符串就是一系列字符,用引号括起的都是字符串,其中的引号可以是单引号,也可以是双引号
message = 'I told my friend, "Python is my favorite language!"'
message2 = "The language 'Python' is named after Monty Python, not the snake."
在编程中,空白泛指任何非打印字符,如空格、制表符和换行符
3.4 列表(list)
- 列表由一系列按特定顺序排列的元素组成(有序),列表中的元素可以是不同类型的对象
- 列表用方括号
[]表示,元素之间用逗号,分隔
# 初始化
motorcycles = []
# 添加元素
motorcycles.append('yamaha')
motorcycles.append('suzuki')
3.5 元组(tuple)
- 元组是一种不可变的有序集合类型
- 元组用圆括号
()表示,元素之间用逗号,分隔
empty_tuple = ()
multi_tuple = (1, 'apple', 3.14)
single_tuple = ('banana',)
3.6 集合(set)
- 集合是一个无序的不重复元素序列
- 集合用方括号
{}表示,元素之间用逗号,分隔
empty_set = set()
empty_set.add(1)
set1 = {1, 2, 3}
set2 = set([4, 5, 6])
3.7 字典(dict)
字典是一系列键值对
person = {}
# 空字典
person = {}
person = {'name': 'Alice', 'age': 25}
# 添加 or 更新键值对
person['age'] = 30
languages = {
'Alice': ['Java', 'Python'],
'Alan': ['Python'],
'Tom': ['Go', 'Java']
}
4. 示例
4.1 算术运算
print(9 / 5) # 除法
print(9 // 5) # 整数
print(9 % 5) # 取模
print(2 ** 3) # 幂运算
计算乘方数
# 两个* 或者 pow()
result = 2 ** 3
result = pow(2, 3)
# 取模, (2^3) % 5
result = pow(2, 3, 5)
4.2 循环语句
def while_loop():
number = 1
while number < 5:
print(number)
number += 1
def for_loop():
cats = ['audi', 'bmw', 'toyota']
for cat in cats:
if cat == 'bmw':
print(cat.upper())
else:
print(cat.title())
def for_loop2():
cats = ['audi', 'bmw', 'toyota']
for i, cat in enumerate(cats):
print(i, cat)
# _ 在 Python 中是一个合法的变量名,通常用于表示一个临时或不重要的变量
def func_loop():
# 此处的 _ 代表循环的计数器,但它并没有被使用,只作为占位符
for _ in range(2):
print("Hello, World!")
4.3 字符串操作
title() 首字母大写
name = 'Python language'
print(f'name.title(): {name.title()}, name.lower(): {name.lower()}, name.upper(): {name.upper()}')
存储数据时,方法lower()很有用。很多时候无法依靠用户来提供正确的大小写,因此需要将字符串先转换为小写,再存储它们
格式化
# f字符串,Python 3.6 引入的,低版本使用format()
first_name = 'Alan'
last_name = 'Turing'
full_name = f'Hello,{first_name} {last_name}'
print(full_name)
# 低版本,每个变量通过一对花括号来引用
format_name = '{} {}'.format(first_name, last_name)
print(format_name)
空白符
print("Languages:\nPython\tJava\tGo")
# 移除空白符
name = ' Python '
print(f'name.rstrip():{name.rstrip()}, name.lstrip():{name.lstrip()}')
print(f'name.strip():{name.strip()}')
转为字符串
motorcycles = ['honda', 'yamaha', 'suzuki']
print('列表长度:' + str(len(motorcycles)))
cars = ['bmw', 'audi', 'toyota', 'subaru']
# str.join(iterable) 将序列中的元素以指定的字符连接成一个新的字符串
print("cars: " + ' '.join(cars))
4.4 生成器
range(start, end) : 左闭右开
range(11) 代表从0到10,不包括11,相当于 range[0,11)
range里面还可以增加步长,比如range(1,11,2) 代表的是[1,3,5,7,9]
def range_loop():
# range(start, end): start(包含) ~ end(不包含)
for e in range(1, 3):
print(e)
# range(number): 从 0 开始,打印 0 ~ number(不包含)
for e in range(3):
print(e)
指定步长 range(start, end, step): start, start+step...
def rang_demo():
numbers = list(range(1, 6, 2))
print(numbers) # [1, 3, 5]
def range_loop():
## 打印乘方
squares = []
for e in range(1, 6):
squares.append(e ** 2)
print(squares)
# 简化:列表解析
def range_loop2():
squares = [e ** 2 for e in range(1, 6)]
print(squares)
4.5 随机数
import random
# 生成一个0到1之间的随机浮点数
random_f = random.random()
# 指定范围内的随机浮点数
random_float = random.uniform(1, 3)
# 指定范围内的随机整数
random_int = random.randint(1, 3)
4.6 其他
tup = {'label':'NEGATIVE', 'score':'0.901546'}
print([tup]) # [{'label': 'NEGATIVE', 'score': '0.901546'}]
print(list(tup)) # ['label', 'score']
print(list(tup.items())) # [('label', 'NEGATIVE'), ('score', '0.901546')]