Python 基础语法(1)【 适合0基础 】
1. 注释
1.1 注释的概念
注释是一种特殊的代码, 它不会影响到程序的执行, 但能够起到解释说明的作用。能帮助自己或者其他人理解代码的执行逻辑,可以让人一目了然
注释应有以下规范:
1.内容准确: 注释内容要和代码一致,及时更新.
2. 篇幅合理: 注释既不应该太精简, 也不应该长篇大论.
1.2 注释的语法
(1) 注释行
使用 # 开头注释:
# 这是一行注释
(2) 文档字符串
使用三引号引起来的称为“文档字符串”,也可以视为一种注释:
a.可以包含多行内容 b.一般放在 文件/函数/类 的开头 c."""和'''等价
"""
这是文档字符串
这是文档字符串
"""'''
这是文档字符串
这是文档字符串
'''
2.常量
print(1+2-3)
print(1+2/3)# print是一个 Python 内置的函数,可以将结果进行打印
# 运算符和数字间,可以没有空格,也可以有多个空格,但习惯上写一个空格(比较美观)
结果:
如 1 + 2 - 3 这样是算式, 在编程语言中称为 表达式, 运算结果则称为 表达式的返回值
1 , 2 , 3 这种被称为 字面值常量, + - * / 这种称为 运算符 或 操作符.
( 注意: 熟悉 C / Java 的同学可能认为, 2 / 3 结果为 0 (小数部分被截断).,但是在 Python 中得到的结果是一个小数 )
3.变量
3.1 变量的概念
如果进行的计算比较复杂, 要把一些中间结果保存起来. 这个时候就需要用到 变量,即:变量可以视为是一块能够容纳数据的空间。
3.2 变量的语法
3.2.1 定义变量
a = 10
# a为变量名,当创建多个变量时,以名字区分
# = 为赋值运算符,将=右侧的数据放入=左侧的空间
变量的命名规则:
1.区分大小写
2.由字母、数字、下划线组成,第一个字符不能是数字;Python3中可以使用中文
3.不能使用关键字,不要使用内置对象的名字
4.不要使用前后双下划线,在Python中有特殊含义
5.简短而富有描述性(软性规则)
3.2.2 使用变量
b = 20
# 修改变量,也用=运算,看起来和定义变量没明显区别
b = 30a = 10
# 一个变量赋值给另一个变量
a = b# 读取变量
print(a)
3.3 变量的类型
3.3.1 类型的种类
变量不仅可以存储数字,还可以存储其他种类的数据,为方便区分,我们引入“类型”
(和 C++ / Java 等语言不同, Python 变量的类型不需要显式指定, 而是在赋值的时候确定的)
# (1)整数
a = 10
print(type(a))
# type 是 Python 内置的函数,可以用 type 查看一个变量的类型
# 和 C++ / Java 不同, Python 的 int 类型变量, 表示的数据范围是没有上限的. 只要内存足够
# 大, 理论上就可以表示无限大小的数据# (2)浮点数
a = 0.5
print(type(a))
# 和 C++ / Java 不同, Python 的小数只有 float 一种类型, 没有 double 类型. 但实际上
# Python 的 float 就相当于 C++ / Java 的 double(双精度浮点数)
"""
相比于单精度浮点数, 双精度浮点数占用的内存空间更多, 表示的数据精度更高即可(大概精确到小数点后
15 位)
"""# (3)字符串
a = 'hello'
print(type(a))
# 使用''或者""引起来的,称为 字符串 ,表示文本。
# 在 Python 中,单引号构成的字符串和双引号构成的字符串, 没有区别print(len(a))
# 可以用len函数获取字符串长度a = 'hello'
b = "world"
print(a+b)
# 可以使用 + 针对两个字符串进行拼接,但不能拿字符串和整数/浮点数相加# (4)布尔
# 布尔类型是一个特殊的类型, 取值只有两种, True 和 False
a = True
print(type(a))
b = False
print(type(b))
# 布尔类型在进行逻辑判断时很有用# (5)其他
# 除了上述类型,Python 中还有 list,tuple,dict,complex(复数),自定义类型,后续详细讨论
3.3.2 类型的作用
(1) 类型决定数据在内存中占据多大空间。如 float 在内存中占8个字节
(计算机中 1 个二进制位, 称为一个 "比特", 8 个二进制位, 就称为一个 "字节" (Byte))
(2) 类型其实约定了能对这个变量做什么样的操作。如 int/float 类型,可以进行+-*/等操作
3.4 动态类型特性
Python 中, 一个变量的类型, 是可以在 "程序运行" 过程中发生变化的,这个特性称为”动态类型"
a = 10
print(type(a))
a = "hello"
print(type(a))
# a的类型开始为 int ,后来变成了 str
# ps:C++/Java 则不允许这样的操作. 一个变量定义后类型就是固定的了. 这种特性称为 "静态类型"
动态类型特性是一把双刃剑:
对于中小型程序, 可以极大地解约代码量(写一段代码就可以同时支持多种类型).
对于大型程序, 提高了模块之间的交互成本
4. 输入输出
4.1 输出
Python 通过 print 函数输出到控制台(PyCharm 运行程序, 下方弹出的窗口就可以视为是控制台)
b = True
print(b)
# 输出布尔类型的变量a = 10
print(f'a={a}')
# 输出的内容混合字符串和变量
# 使用 f 作为前缀的字符串,称为 f-string;里面可以用{}内嵌一个其他变量/表达式
除了 f-string 方法,还有 format 和 格式化运算符% 可以混合打印:
1. format 的使用 :
format 是 Python 中用于格式化字符串的内置方法,通过 {} 作为占位符,将变量或值插入字符串中
name = "lili"
age = 25
message = "My name is {} and I am {} years old.".format(name, age)
print(message)
# 输出:My name is lili and I am 25 years old.# 位置参数
text = "{} + {} = {}".format(10, 20, 30)
# 关键字参数
text = "{x} * {y} = {z}".format(x=3, y=4, z=12)
2. 格式化运算符%的使用:
格式化运算符 % ,通过占位符将变量插入字符串,但变量数量需与占位符匹配
%s | 字符串(或任何对象,自动调用str()) |
%d | 十进制整数 |
%f | 浮点数 |
name = "lili"
age = 25
print("Name: %s, Age: %d" % (name, age))
# 输出: Name: lili, Age: 25
掌握 f-string 方法即可,该方法最简便。
# print 输出到控制台会自动换行
# 换行符(字符) \n
print('hello world\n')
print('hello world')# 如果想把多行代码写到一行,使用 ;
# (ps: 和 C++/Java 不同,Python 里,语句结尾的分号是可选的。不过在实际的 Python 编风格中,通常不会使用分号来结束语句)
a = 10; b = 20; print(a); print(b)# 一行代码中间进行换行 \
print\('hello world')
4.2 输入
Python 使用 input 函数,从控制台读取用户输入
num = 0
num = input('请输入一个整数: ')
print(f'你输入的整数是{num}')
# input里的参数相当于提示,可以没有a = input('请输入第一个整数: ')
b = input('请输入第二个整数: ')
print(f'a + b = {a + b}')
# input的返回值是用户输入的内容,是字符串类型;所以结果是字符串拼接a = input('请输入第一个整数: ')
b = input('请输入第二个整数: ')
a = int(a)
b = int(b)
print(f'a + b = {a + b}')
# 通过int()把变量转换为int类型,同理,使用float(),bool(),str()可以完成对应转换
5. 运算符
5.1 算术运算符
如:+ - * / % ** // 这种算术运算的运算符,称为 算术运算符
print(1/2)
# 整数/整数结果可能是小数,不会截断print(3%2)
# % 是求余数print(4 ** 2)
print(4 ** 0.5)
# ** 是求乘方,整数次方和小数次方都可以print(7 // 2)
# // 是取整除法(也叫地板除),结果舍弃小数部分,并向下取整,不是四舍五入print(10 / 0)
# 0 不能作为除数
5.2 关系运算符
如: < ,<=, >, >=,==,!= 这样比较操作数之间关系的,称为 关系运算符
其中:
<= 是 "小于等于"
>= 是 "大于等于"
== 是 "等于" (注意,== 是判断相等,= 是赋值)
!= 是 "不等于"
a = 10
b = 20
print(a > b)
print(a <= b)
# 如果关系符合, 则表达式返回 True; 如果关系不符合, 则表达式返回 Falsea = 'hello'
b = 'world'
print(a < b)
print(a >= b)
print(a == b)
# 字符串也可以进行比较,字符串比较,按照“字典序”
"""
字典序:
一个英文词典, 上面的单词都是按照字母顺序排列. 如果首个字母相同, 就比较第二个字母.
一个单词在词典上越靠前, 就越小. 越靠后, 就越大.
"""print(0.1+0.2 == 0.3)
# 对于浮点数,不使用 == 判断相等,因为浮点数在计算机中的表示并不是精确的,计算过程中容易出现误差
print(0.1)
print(0.2)
print(0.1+0.2)
# 可以看到0.1+0.2不等于0.3,使用 == 的结果为False# 正确比较方式:判断差值是否小于允许的误差范围
a = 0.1 + 0.2
b = 0.3
print(-0.000001 < (a - b) < 0.000001)
5.3 逻辑运算符
如:and , or , not 这种逻辑判断的运算符,称为 逻辑运算符
and :两侧操作数均为 True, 最终结果为 True;否则为 False (一假则假)
or :两侧操作数均为 False, 最终结果为 False.;否则为 True.(一真则真)
not :逻辑取反.,操作数本身为 True, 则返回 False; 本身为 False, 则返回 True
a = 10
b = 20
c = 30print(a < b and b < c)
print(a < b < c)
# a < b and b < c 等价于 a < 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)
短路求值:
对于 and, 如果左侧表达式为 False, 则整体一定为 False, 右侧表达式不再执行
对于 or, 如果左侧表达式为 True, 则整体一定为 True, 右侧表达式不再执行
print(10 > 20 and 10 / 0 == 1)
print(10 < 20 or 10 / 0 == 1)
# 右侧式子不执行,所以没抛异常
5.4 赋值运算符
5.4.1 = 的使用
= 表示赋值,注意和 == 区别
# 链式赋值
a = b = 10# 多元赋值
a, b = 10, 20
# 10赋值给a,20赋值给b
a, b = b, a
# b赋值给a,a赋值给b,同时进行
print(a)
print(b)
5.4.2 符合赋值运算
如:+=,-=,*=,/=,%=,称为 复合赋值运算符
a = 10
a += 1
print(a)
a = a + 1
print(a)
# a += 1 等价于 a = a + 1
# 其他复合赋值运算符也同理
注:像 C++ / Java 中, 存在 ++ -- 这样的自增/自减运算符,Python 中不支持这种运算. 如果需要使用,则直接使用 += 1 或者 -= 1
5.5 其他运算符
身份运算符 (is, is not), 成员运算符 (in, not in), 位运算符( & | ~ ^ << >>)
6. 转义字符
6.1 转义字符的概念
Python转义字符用于在字符串中表示特殊字符或无法直接输入的字符,通常以反斜杠\
开头
6.2 转义字符的种类
\n | 表示换行符,用于在字符串中创建新的一行 |
\t | 表示水平制表符,相当于按一次Tab键的间距。 |
\\ | 表示反斜杠本身,用于在字符串中插入一个实际的\ |
\' 和 \" | 用于在字符串中插入单引号或双引号,避免与字符串的引号冲突 |
\r | 表示回车符,将光标移动到行首,常用于覆盖输出 |
原始字符串:
在字符串前加 r 或 R
可以忽略转义字符,常用于文件路径