当前位置: 首页 > news >正文

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表示回车符,将光标移动到行首,常用于覆盖输出

原始字符串:

在字符串前加 或 可以忽略转义字符,常用于文件路径

相关文章:

  • C# StringBuilder代码中预分配容量的作用
  • Java免费获取汇率工具实现
  • 【计算机组成原理 第5版】白、戴编著 第四章 指令系统 课后题总结
  • HarmonyOS 应用开发学习记录 - 从Windows开发者视角看鸿蒙开发
  • 搭建一个springColud 项目,从头开始,里面有订单,库存两个模块
  • 湖北理元理律师事务所服务方法论:债务规划中的倾听者价值
  • CentOS7下的Flink 集群部署
  • EtherCAT转CC-Link IE协议转换通讯助力库卡机器人与三菱PLC无缝对接
  • C++_红黑树
  • 《为什么 String 是 final 的?Java 字符串池机制全面解析》
  • 常用ADB命令
  • LeetCode 3442. Maximum Difference Between Even and Odd Frequency I
  • C# Serilog 日志
  • 全国空气质量监测站点数据分析:从原始数据到空间可视化
  • (八)深度循环神经网络:长序列建模、注意力机制与多模态融合
  • NY167NY171美光固态闪存NY176NY180
  • 交叉编译笔记
  • 开源高频电磁场与电磁波数值仿真软件
  • chrome插件中如何使用midscene.js
  • Cursor 工具项目构建指南:让 AI 审查 AI 生产的内容,确保生产的内容质量和提前发现问题
  • 网站开发设计的阶段/大数据精准营销
  • 松江公司做网站/无锡百度公司代理商
  • app网站建设/软文营销经典案例优秀软文
  • 常州做网站yongjiaweb/西安企业seo外包服务公司
  • 宁夏网站建设联系电话/什么是seo搜索优化
  • 贵州网站优化/世界网站排名查询