
文章目录
概要&序論
Hello大家好,我是此方,这个专栏讲Python,从基础语法到Python常用的库的总体介绍。但是本专栏适用人群是对C/C++语法比较熟悉的人群。不会详细讲解Python的语法细节,只会对比差异快速上手。
和以往不同,我们就不讲Python的历史和发展了。
也许我可以试试条款式的写法?一定追求极致的简洁!
Tips: 我们的文章使用的Python环境
适用于多种工作场合:
运行环境:Ubuntu20.04 ;
解释器:Python3 版本3.8.10 ;
编辑器:VScode
一、 语法基础与变量
条款 1:舍弃句末分号 ;,即使失去它你会感到别扭,Python 靠换行分隔语句。
条款 2:变量无需显式声明类型,在赋值时自动确定类型。
a = 10
print(type(a))
条款 3:使用 type() 内置函数直接查看变量类型。
条款 4:支持“动态类型”,变量类型可在程序运行过程中随时发生变化(C++ 无法做到)。
二、 数据类型差异
条款 5:小数只有 float 一种类型(没有 double),底层等价于 C++ 的双精度浮点数 double。
条款 6:单引号 ‘hello’ 与双引号 “hello” 完全等价,无 C++ 中 char 与 std::string 的区别。
条款 7:使用 len() 函数直接获取字符串长度。
a = 'hello'
print(len(a))
条款 8:布尔类型为 True 和 False,首字母必须大写!
条款 9:单行注释用 #;多行注释或文档字符串用连续三个单引号 ‘’’ 或双引号 “”"。
# 这是一行注释.
"""
这是文档字符串
这是文档字符串
"""
三、 输入输出与类型转换
条款 10:使用前缀 f 格式化字符串(f-string),通过 {} 内嵌变量或表达式(C++ 原生无此语法)。
num = 10
print(f'num = {num}')
条款 11:使用 input() 获取控制台输入,参数为可选提示词,返回值为 str 类型。
num = 0
num = input('请输入一个整数:')
print(f'你输入的整数是 {num}')
条款 12:使用 int()、float()、bool()、str() 进行显式类型转换(即“强制类型转换”)。
a = input('请输入第一个整数:')
b = input('请输入第二个整数:')
a = int(a)
b = int(b)
print(f'a + b = {a + b}')
四、 运算符与特殊语法
条款 13:除法 / 默认保留小数(如 2 / 3 得到 0.666…),不同于 C++ 截断整数;使用 // 进行取整除法(地板除,向下取整)。
条款 14:使用 ** 进行乘方运算,同时支持整数和小数次方。
print(4 ** 2)
print(4 ** 0.5)
条款 15:逻辑运算符弃用 &&、||、!,改用英文单词 and(一假则假)、or(一真则真)、not(取反)。
a = 10
b = 20
c = 30
print(a < b and b < c)
print(a < b and b > c)
print(a > b or b > c)
print(a < b or b > c)
print(not a < b)
print(not a > b)
条款 16:支持连续比较语法(如 a < b < c),等价于 a < b and b < c。
条款 17:支持多元赋值,交换两变量无需临时变量,直接 a, b = b, a 即可。
a, b = 10, 20
a = 10
b = 20
a, b = b, a
条款 18:取消 ++ 和 – 运算符,如需自增/自减,必须使用 += 1 或 -= 1。
五、 条件语句
Python 中的条件语句写法,和很多编程语言不太一样:
条款 19:if 后面的条件表达式取消圆括号 (),并使用冒号 : 作为结尾。
条款 20:取消花括号 {},严格使用缩进(通常是 4 个空格或 1 个 tab)来界定“语句块”。
条款 21:多条件分支不写 else if,而是合体写作 elif。
(1) if 例子
if expression:
do_something1
do_something2
next_something
- 如果 expression 值为 True, 则执行 do_something1, do_something2, next_something
- 如果 expression 值为 False, 则只执行 next_something, 不执行 do_something1, do_something2
(2) if - else 例子
if expression:
do_something1
else:
do_something2
- 如果 expression 值为 True, 则执行 do_something1
- 如果 expression 值为 False, 则执行 do_something2
(3) if - elif - else 例子
if expression1:
do_something1
elif expression2:
do_something2
else:
do_something3
- 如果 expression1 值为 True, 则执行 do_something1
- 如果 expression1 值为 False, 并且 expression2 值为 True 则执行 do_something2
- 如果 expression1 值为 False, 并且 expression2 值为 False 则执行 do_something3
六、缩进和代码块
代码块指的是一组放在一起执行的代码。
在 Python 中使用缩进表示代码块. 不同级别的缩进, 程序的执行效果是不同的。
# 代码1
a = input("请输入一个整数: ")
if a == "1":
print("hello")
print("world")
# 代码2
a = input("请输入一个整数: ")
if a == "1":
print("hello")
print("world")
注意上述代码的区别.
在代码1中, print(“world”) 有一级缩进, 这个语句属于 if 内的代码块, 意味着条件成立, 才执行, 条件不成立, 则不执行.
在代码2中, print(“world”) 没有缩进, 这个语句是 if 外部的代码, 不属于 if 内部的代码块. 意味着条件无论是否成立, 都会执行.
另外, 代码块内部还可以嵌套代码块.
a = input("请输入第一个整数: ")
b = input("请输入第二个整数: ")
if a == "1":
if b == "2":
print("hello")
print("world")
print("python")
在这个代码中,
- print(“hello”) 具有两级缩进, 属于 if b == “2”: 条件成立的代码块.
- print(“world”) 具有一级缩进, 属于 if a == “1”: 条件成立的代码块.
- print(“python”) 没有缩进, 无论上述两个条件是否成立, 该语句都会执行.
基于缩进的方式表示代码块, 带来的好处就是强制要求程序员要写明确的缩进, 来明确代码之间的相对关系. 如果缩进书写的不对, 则直接报错。
像 C++ / Java 这些语言, 即使完全不写缩进, 语法也不会报错, 代码可读性就比较差。
同时, 带来的坏处就是, 如果缩进层次比较多, 就容易分不清楚某个语句属于哪个层级。
if a == 1:
if b == 2:
if c == 3:
if d == 4:
if e == 5:
if f == 6:
if g == 7:
print("hello")
print("1")
print("2")
请问, 上述代码中的 print(“1”) 和 print(“2”) 属于哪一级缩进?
所以,写 Python 请自备游标卡尺!

条款 22:使用 pass 作为空语句占位。Python 不允许条件分支或函数体内部为空,若暂时无需编写具体逻辑,必须使用 pass 占位以维持语法完整(不同于 C++ 可以直接写一对空大括号 {} 或分号 ;)。
七、空语句 pass
输入一个数字,如果数字为 1,则打印 hello。
a = int(input("请输入一个整数:"))
if a == 1:
print("hello")
这个代码也可以等价写成:
a = int(input("请输入一个整数:"))
if a != 1:
pass
else:
print("hello")
其中 pass 表示空语句,并不会对程序的执行有任何影响,只是占个位置,保持 Python 语法格式符合要求。
如果代码写作:
a = int(input("请输入一个整数:"))
if a != 1:
else:
print("hello")
程序是不符合 Python 语法的,会直接报错。
八、for循环
while循环的语法没有太大差别
条款 23:Python 的 for 循环没有 C++ 式的“初始化语句”、“条件判定语句”和“循环变量更新语句”,而是通过 for 循环变量 in 可迭代对象: 的结构直接遍历对象。
条款 24:常用 range(begin, end, step) 函数生成可迭代区间,包含范围为前闭后开区间 [begin, end);第三个参数 step 用于指定步长(支持正数和负数)。
基本语法格式:
for 循环变量 in 可迭代对象:
循环体
代码示例: 打印 1-10
for i in range(1, 11):
print(i)
使用 range 函数, 能够生成一个可迭代对象. 生成的范围是 [1, 11), 也就是 [1, 10]
代码示例: 打印 2, 4, 6, 8, 10
for i in range(2, 12, 2):
print(i)
通过 range 的第三个参数, 可以指定迭代时候的 “步长”. 也就是一次让循环变量加几。
代码示例: 打印 10-1
for i in range(10, 0, -1):
print(i)
range 的步长 也可以设定成负数.
continue,break这些和C++都一样。不讲。
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/Z2314246476/article/details/164375713




