【Python】--- 基础语法(上)

Welcome to 9ilk's Code World

(๑•́ ₃ •̀๑) 个人主页: 9ilk

(๑•́ ₃ •̀๑) 文章专栏: Python


本篇博客博主将分享一些python的基础语法。


🏠 常量和表达式

我们可以把Python当成一个计算器,进行一些简单的算术运算

python 复制代码
print(1 + 2 - 3)
print(1 + 2 * 3)
print(1 + 2 / 3)

#输出结果:
#0
#7
#1.6666666666665

形如1 + 2 - 3这样的算式,被称为表达式 ,算式的运算结果称为表达式的返回值 .其中1,2,3这种称为字面值常量 ,+,-,*,/这种称为运算符或着操作符.

注意:

  • print是Python一个内置函数,用于打印。
  • 运算符和数字之间,可以没有空格,也可以有多个空格,但一般为了美观习惯写上一个空格。
  • 可以使用 + - * / ( ) 等运算符进行算术运算. 先算乘除, 后算加减。
  • 在Python中类似2/3整数除整数结果得到的可能是个小数,而C++/Java等语言结果会发生截断结果为0.

🏠 变量和类型

📌 变量

📒 变量是什么

变量可以视为是一块能够容纳数据的空间 . 这个空间往往对应到 " 内存 " 这样的硬件设备上.

python 复制代码
avg = (67.5 + 89.0 + 12.9 + 32.2) / 4
total = (67.5 - avg) ** 2 + (89.0 - avg) ** 2 + (12.9 - avg) ** 2 + (32.2 - avg) 
** 2
result = total / 3
print(result)

在这个代码中, 就需要先计算这四个数字的平均值, 然后再计算方差. 这就需要把计算的平均值使用 变量保存起来.

📒 变量定义

python 复制代码
a = 10
  • 上述代码a为变量名,当我们创建多个变量时,就可以用名字来进行区分。
  • 定义变量时不用声明类型。

📒 变量名规则

  • 硬性规则

1.变量名由数字字母下划线构成 .
2.数字不能开头 .
3.变量名不能和 " 关键字 " 重复 .
4.变量名大小写敏感 . num 和 Num 是两个不同的变量名 .

  • 软性规则

1.变量名使用有描述性的单词来表示 , 尽量表达出变量的作用 .
2.一个变量名可以由多个单词构成 , 长一点没关系 , 但是含义要清晰 .
3.当变量名包含多个单词的时候 , 建议使用 " 驼峰命名法 ". 形如 totalCount , personInfo 这种 , 除了首个单词外, 剩余单词首字母大写

📒 变量使用

  • 读取变量的值
python 复制代码
a = 10
print(a)

注:首次使用 = 对a进行设置值,这个过程是创建变量(初始化)

  • 修改变量
python 复制代码
a = 10
print(a)

a = 20
print(a) # 20

b = 30
a = b

注:修改变量也是使用 = ,此时是相当于是修改a的内容,赋值操作.

📌 变量的类型

变量里面存储的不仅仅是数字 , 还可以存储其它种类的数据 . 为了区分不同种类的数据 , 我们引入了 " 类型 "这样的概念。
注:Python中变量类型,不需要在定义变量的时候显式声明,而只是依靠初始化语句,根据初始化的值的类型来进行确定。比如,a=2确定a是int类型。

📒 type

type 和 print 类似, 也是 python 内置的函数. 可以使用 type 来查看一个变量的类型.

📒 整数

python 复制代码
a = 10
print(type(a))

输出:class<'int'>

注:在Python中,int能表示的数据范围是"无穷"的,Python中的int是可以根据要表示的数据的大小,自动扩容.因此Python中就没有long,byte,short这样的类型~

📒 浮点数

python 复制代码
a = 0.5
print(type(a))

输出结果:class<'float'>

注 : 像C++和Java里,float是4个字节,也叫做"单精度浮点数",double是8个字节,也叫做"双精度浮点数";Python中的float就是双精度浮点数,没有double.

从整形和浮点型设计体现出Python的一个设计哲学:解决一个问题,只提供一种方案.

📒 字符串

python 复制代码
a = 'hello'
b = "hello"
print(type(a))

使用 ' ' 或者 " " 引起来的 , 称为 字符串(str) . 可以用来表示文本 .

  • 在 Python 中, 单引号构成的字符串和双引号构成的字符串, 没有区别. 'hello' 和 "hello" 是
    完全等价的.
  • 如果字符串里面包含了双引号,表示字符串就可以用单引号引起来;如果字符串里面包含了单引号,表示字符串就可以使用双引号引起来。
python 复制代码
e = "My name is "Jack"" #这时错误写法会识别成My name is和空字符串

e = 'My name is "Jack" '
  • 如果字符串内同时有双引号和单引号,可以使用三引号'''或者"""
python 复制代码
a = '''heoo is "jack" 'mary' '''
a = """heoo is "jack" 'mary' """
print(a)
  • 可以使用 len 函数来获取字符串的长度
python 复制代码
a = 'hello'
print(len(a))
  • 可以使用 + 针对两个字符串进行拼接(拼接后对原来的字符串无影响),但是 不能拿字符串和整数/浮点数相加
python 复制代码
a = 'hello'
b = 'world'
print(a + b) #helloworld

📒 布尔

布尔类型是一个特殊的类型 , 取值只有两种 , True ( 真 ) 和 False ( 假 ).

python 复制代码
a = True
print(type(a))
b = False
print(type(b))

输出结果:

<class 'bool'>

<class 'bool'>

注 : 虽然是特殊的类型但True是可以表示1,False表示0的.比如print(True+1),输出2.

📒 类型的意义

  1. 类型决定了数据在内存中占据多大空间 .
    (2) 类型其实约定了能对这个变量做什么样的操作 .
    总结:类型系统其实是在对变量进行 "归类". 相同类型的变量(数据) 往往具有类似的特性和使用规则.

📌 动态类型特性

python 复制代码
a = 10
print(type(a))
a = 'hello'
print(type(a))

在程序执行过程中, a 的类型刚开始是 int, 后面变成了 str

在 Python 中 , 一个变量是什么类型 , 是可以在 " 程序运行 " 过程中发生变化的 . 这个特性称为 " 动态类型".

  • C++/Java 这样的语言则不允许这样的操作. 一个变量定义后类型就是固定的了. 这种特性则称为 "静态类型"
  • 一个编程语言,是否是动态类型,只是取决于运行时类型是否发生改变,不取决于变量定义的时候是否声明类型!
  • Python作为一个动态类型的语言,在定义变量的时候,也是可以写类型的
python 复制代码
a:int  = 10
b:str = 'hello'
  • 动态类型特性是一把双刃剑 .

对于中小型程序 , 可以大大的解约代码量 ( 比如写一段代码就可以同时支持多种类型 ).
对于大型程序 , 则提高了模块之间的交互成本 . ( 程序猿 A 提供的代码难以被 B 理解 ).

🏠 注释

📌 什么是注释

注释是一种特殊的代码 , 它不会影响到程序的执行 , 但是能够起到解释说明的作用 , 能够帮助程序猿理解程序代码的执行逻辑。

📌 注释的语法

  • 注释行 : 使用 # 开头的行都是注释.
python 复制代码
# 这是一行注释.
  • 文档字符串 : 使用三引号引起来的称为 "文档字符串", 也可以视为是一种注释
python 复制代码
"""
这是文档字符串
这是文档字符串
"""

注:
1.可以包含多行内容 ,
2.一般放在 文件 / 函数 / 类 的开头 .
3.""" 或者 ''' 均可 ( 等价 ).

📌 注释的规范

  1. 内容准确 : 注释内容要和代码一致 , 匹配 , 并在代码修改时及时更新。
  2. 篇幅合理 : 注释既不应该太精简 , 也不应该长篇大论。
  3. 使用中文 : 一般中国公司都要求使用中文写注释 , 外企另当别论。
  4. 积极向上 : 注释中不要包含负能量。

🏠 输入输出

程序需要和用户进行交互:

  1. 用户把信息传递给程序的过程 , 称为 " 输入 "。
  2. 程序把结果展示给用户的过程 , 称为 " 输出 "。
    输入输出的最基本的方法就是控制台。 用户通过控制台输入一些字符串 , 程序再通过控制台打印出一些字符串。
    输入输出的最常见方法是图形化界面 . 如我们平时用到的 QQ, 浏览器 , steam 等 , 都不需要用户输入命令 , 而只是通过鼠标点击窗口点击按钮的方式来操作。

📌 通过控制台输出

Python 使用 print 函数输出到控制台。

python 复制代码
print('hello')

不仅能输出一个字符串 , 还可以输出一个其他类型的变量

python 复制代码
a = 10
print(a)
b = True
print(b)

更多的时候 , 我们希望能够输出的内容是混合了字符串和变量的。比如输出:num = 10

python 复制代码
num = 10
print(f'num = {num}')
  • 这个语法叫做"格式化字符串",此时可以使用{ }往字符串里嵌入变量或者表达式
  • 使用f作为前缀的字符串,称为f-string,此处的f表示"format"。

📌 控制台输入

python 使用 input 函数 , 从控制台读取用户的输入。

python 复制代码
num = 0
num = input('请输入一个整数: ')
print(f'你输入的整数是 {num}')

注:

  • input参数相当于一个"提示信息",也可以没有参数。
  • input的返回值就是用户输入的内容,是字符串类型。
python 复制代码
a = input('请输入第一个整数: ')
b = input('请输入第二个整数: ')
print(f'a + b = {a + b}')

给a,b输入,最后print打印结果是a + b = 1020。说明此处的结果是字符串拼接,不是算术运算,因为input返回值是str类型。如果想进行算术运算,需要先转换类型。

python 复制代码
a = input('请输入第一个整数: ')
b = input('请输入第二个整数: ')
a = int(a)
b = int(b)
print(f'a + b = {a + b}'}

输出结果变为a + b = 30。

通过int()把变量转成了int类型。类似的,使用float(),bool(),str()等可以完成对应的类型转换。

🏠 运算符

📌 算术运算符

+ - * / % ** // 这种进行算术运算的运算符 , 称为 算术运算符。

  • 有些编程语言中,/整数0会抛异常,/浮点数0会得到无穷大,而Python都认为是除0异常。
  • 整数 / 整数 结果可能是小数. 而不会截断。
  • %不是百分数,而是求余数。
  • **是求乘方,不光能求整数次方,还能开方。
python 复制代码
print(4 ** 2)
print(4 ** 0.5)
  • //是取整除法(也叫地板除),整数除以整数,结果还是整数(舍弃小数部分,并向下取整。不是四舍五入)
python 复制代码
print(7 // 2)
print(-7 // 2)

📌关系运算符

像 < <= > >= == != 这一系列的运算符称为 关系运算符 , 它们是在比较操作数之间的关系 .

  • 如果关系符合, 则表达式返回 True. 如果关系不符合, 则表达式返回 False
python 复制代码
a = 10
b = 20
print(a < b)
print(a <= b)
print(a > b)
print(a >= b)
print(a == b)
print(a != b)

输出:

True

True

False

False

False

True

  • 关系运算符不光针对整数 / 浮点数进行比较 , 还能针对字符串进行比较。
python 复制代码
a = 'hello'
b = 'world'
print(a < b)
print(a <= b)
print(a > b)
print(a >= b)
print(a == b)
print(a != b)

输出结果:

True

True

False

False

False

True

注:

1. 直接使用 == 或者 != 即可对字符串内容判定相等。

2. 字符串比较大小, 规则是 "字典序" 。

  • 对于浮点数来说, 不要使用 == 判定相等。
python 复制代码
print(0.1 + 0.2 == 0.3)

输出:False。

python 复制代码
print(0.1)
print(0.2)
print(0.3)
print(0.1 + 0.2)

输出结果:

0.1

0.2

0.3

0.3000000000000004

注 : 针对浮点数来说,使用==比较相等,存在一定风险。因为浮点数在内存中的存储和表示,是可能存在误差的,这样的误差在进行算术运算时就可能被放大,从而导致==的判定出现误判。

python 复制代码
a = 0.1 + 0.2
b = 0.3
print(-0.000001 < (a - b) < 0.000001)

正确的比较方式:不再严格比较相等,而是判定差值小于允许的误差范围。在实际工程实践中,误差在所难免,只要保证误差在合理范围内即可。

📌 逻辑运算符

像 and or not 这一系列的运算符称为 逻辑运算符。

  • and并且,两侧操作数均为True,最终结果为True,否则为False(有假则为假)。
  • or或者。两侧操作数均为False,最终结果为False,否则为True。(有真则为真)。
  • not逻辑取反。操作数本身为True,则返回False,本身为False,则返回True。
python 复制代码
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)

输出结果:

True

False

False

True

False

True

注: a < b and b < c 这个操作等价于 a < b < c。这个设定和大部分编程语言都不相同。

  • 短路求值

和其他编程语言类似 , Python 也存在短路求值的规则 .

  1. 对于 and, 如果左侧表达式为 False, 则整体一定为 False, 右侧表达式不再执行。
  1. 对于 or, 如果左侧表达式为 True, 则整体一定为 True, 右侧表达式不再执行。
python 复制代码
print(10 > 20 and 10 / 0 == 1)
print(10 < 20 or 10 / 0 == 1)

输出结果:

False

True
上述代码没有抛出异常, 说明右侧的除以 0 操作没有真正执行.

📌 赋值运算符

  • = 的使用

= 表示赋值,注意==是比较是否相等。

= 还可以针对多个变量进行赋值。

链式赋值

python 复制代码
a = b = 10

多元赋值

python 复制代码
a,b = 10,20
#a被赋值为10,b被赋值为20

a,b = b,a
# a,b进行赋值交换
  • 复合赋值运算符

Python 还有一些 复合赋值运算符 . 例如 += - = *= /= %= ,其中 a += 1 等价于 a = a + 1 . 其他复合赋值运算符也是同理。
注:像C++/Java中,存在++/--这样的自增/自减运算符。但Python中则不支持这种运算(设计时为避免对前置后置的混淆而不支持),如果需要使用,则直接使用+=1或者-=1。

📌 其他运算符

除了上述之外 , Python 中还有一些运算符 , 比如 身份运算符 (is, is not), 成员运算符 (in, not in), 位运算符( & | ~ ^ << >>) 等。


完。

相关推荐
Theodore_10223 小时前
4 设计模式原则之接口隔离原则
java·开发语言·设计模式·java-ee·接口隔离原则·javaee
网易独家音乐人Mike Zhou3 小时前
【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)
c语言·python·单片机·物联网·算法·嵌入式·iot
安静读书3 小时前
Python解析视频FPS(帧率)、分辨率信息
python·opencv·音视频
----云烟----5 小时前
QT中QString类的各种使用
开发语言·qt
lsx2024065 小时前
SQL SELECT 语句:基础与进阶应用
开发语言
小二·5 小时前
java基础面试题笔记(基础篇)
java·笔记·python
开心工作室_kaic5 小时前
ssm161基于web的资源共享平台的共享与开发+jsp(论文+源码)_kaic
java·开发语言·前端
向宇it5 小时前
【unity小技巧】unity 什么是反射?反射的作用?反射的使用场景?反射的缺点?常用的反射操作?反射常见示例
开发语言·游戏·unity·c#·游戏引擎
武子康6 小时前
Java-06 深入浅出 MyBatis - 一对一模型 SqlMapConfig 与 Mapper 详细讲解测试
java·开发语言·数据仓库·sql·mybatis·springboot·springcloud
转世成为计算机大神6 小时前
易考八股文之Java中的设计模式?
java·开发语言·设计模式