Python:基础语法
一、常量和表达式
我们可以把 Python 当成一个计算器, 来进行一些算术运算.
可以使用 + - * / ( ) 等运算符进行算术运算. 先算乘除, 后算加减.
运算符和数字之间, 可以没有空格, 也可以有多个空格. 但是一般习惯上写一个空格(比较美观).
print(1 + 2 - 3)
print(1 + 2 * 3)
print(1 + 2 / 3)
表达式:1+2-3
表达式返回值:运算结果
字面值常量:1、2、3
运算符或操作符:+ - * / **(平方)
(1)熟悉 C / Java 的知道, 2 / 3 结果为 0 (小数部分被截断). 但是在 Python 中得到的结果则是 一个小数. 更符合日常使用的直觉.
(2)编程中没有“四舍五入”的规则,浮点数遵照IEEE754标准规则,会有微小误差
二、变量和类型
2.1 变量的语法
有的时候, 我们需要进行的计算可能更复杂一些, 需要把一些计算的中间结果保存起来. 这个时候就需要用到变量 ——>可以被视为一块用来存储数据的盒子
举例:
(1)定义变量
硬性规则(务必遵守) :
1、变量名由数字字母下划线构成.
2、数字不能开头.
3、变量名不能和 "关键字" 重复.
4、变量名大小写敏感. num 和 Num 是两个不同的变量名.
软性规则(建议遵守)
1、给变量命名的时候,尽量用描述性的单词来表示,尽量通过名字来表现出变量的作用
2、当我们使用一个单词描述不清楚的时候,可以用多个单词来命名,不怕变量名字长,而怕变量的含义表达不清楚
当包含多个单词时,命名有多种规范
(1)驼峰命名——除了第一个单词的首字母外,后续每个单词的首字母都大写
(2)蛇形命名——单词之间使用下划线_来进行分割
——>至于选用哪一种,一般公司都会有明确的编程规范
(2)使用变量
2.2 变量的类型
变量类型:对于不同的变量做区分
Python中的变量的类型,不需要在定义变量的时候显式声明,而只是依靠初始化语句,根据初始化的值的类型来进行确定的。
(1)int
在Python中,int能够表示的数据范围是 “无穷”的
——>int可以根据表示数据的大小来自动扩容。
——>因此Python里没有long、short这样的类型
(2) float
Python中的float就是双精度浮点数
——>等同于C++/Java里的double
(3)字符串
Python要求使用引号把一系列字符引起来,就构成了字符串。
——>Python并没有char这种类型,引用‘ ’或者“ ”都是可以的
问题1:为什么‘ ’和“ ”都可以,难道不是多次一举吗??
——>其实他们组合在一起时可以起到划分的作用的!!如以下例子:
问题2:字符串拼接问题
但是字符串和数字是不能这样拼接的!!
问题3:Python的报错情况
——>(1)语法错误,在程序运行之前,Python解释器就能把错误识别出来。
(2)运行错误,在程序运行之前,识别不了,必须要执行到对应的代码中才能发现问题。
(4)布尔类型
布尔类型是一个特殊的类型, 取值只有两种, True (真) 和 False (假).
PS: 布尔类型也是数学上的一个概念. 我们初中就学过一个概念叫做 "命题" , 进一步的就可以判定 命题的真假.
(5)其他
除了上述类型之外, Python 中还有 list, tuple, dict, 自定义类型 等等
2.3 类型的意义
1、不同的类型,占用内存空间是不同的
int默认是4个字节,但是会动态扩容
float固定8个字节
bool是1个字节
string是变长的
2、不同的类型,对应能够进行的操作也是不同的
int、float ——> 可以+ - * / 但是不能用len
str ——> 可以+ 和使用len 但不可以- * /
2.4 动态类型
1、静态类型:程序运行过程中,变量的类型适中不变
比如C++和Java 创建变量的类型是一开始就决定好的
2、动态类型:程序运行过程中,变量的类型可能会发生改变
其实py作为一个动态类型的语言,在定义变量的时候也是可以写类型的!!
但是一个编程语言是否是动态类型,只是取决于进行时他的类型是否发生改变,并不取决于变量定义的时候是否声明类型!! ——>所以这里的声明并不影响他的特性,但是声明类型可以增加可读性
3、 动态类型写法比较灵活,提高了语言的表达能力,但是在编程中,“灵活”这个词往往是贬义词,因为这代表更容易出错,尤其是在大型程序的多人协作开发中(比如a提供的代码难以被b理解)。
因此很多公司,在创业之初喜欢用Python来做开发(因为产品规模小,只需要一两个程序员就可以完成),但是当项目达到一定规模之后,动态类型的劣势就逐渐体现出来了,很多公司会针对之前Python写的代码使用其他语言进行重构!!
三、注释
3.1 什么是注释
写代码是一件烧脑的事情,但是读代码也同样非常烧脑,所以注释作为一种特殊的代码,在不会影响到程序执行的同时还能够起到解释说明的作用,帮助程序员理解代码运行的逻辑!!
一般来说,开头的注释一般是写在要注释的代码的上方,也有少数情况下要写在注释代码的右侧,很少会写在代码的下方,更不会写到代码的左侧!!
3.2 注释的语法
Python中有两种风格的注释
(1)注释行 ——>使用#开头的行都是注释
# 这是一行注释.
(2) 文档字符串——>使用三引号('''或“””)引起来
"""
这是文档字符串
这是文档字符串
"""
特点:
一般放在函数、文件、类的开头
可以包含多行内容
和#的区别是可以被Python解释器识别,就可以方便通过其他工具来看到文档字符串的内容
3.3 注释的规范
1、注释的内容,必须是准确的,起到误导作用的注释还不如不写!!
2、公司中的项目经常要进行“迭代” ,一旦需要更新代码,也务必要记得更新注释!!
3、篇幅合理,既不要太精简,也不要长篇大论
4、使用中文,但是一些外企可能会要求英文
5、内容要积极向上,不能有负能量 !(早年虾米音乐的 “穷逼vip”)
3.4 如何批量注释代码?
1、选中要注释的代码
2、ctrl+ /
四、输入输出交互
4.1 控制台
程序需要和用户进行交互.
用户把信息传递给程序的过程, 称为 "输入".
程序把结果展示给用户的过程, 称为 "输出".
输入输出的最基本的方法就是控制台(人与计算机交互的最基础方式)
这些对于机械的操作面板,就叫做控制台,控制台上会有一些按钮,开关,操作杆……
后来又了计算机之后,控制台的概念也就延续下来了……
只不过计算机是通过键盘鼠标等进行操作,把操作结果显示到屏幕上……
——>计算机里,就把用户能输入命令向计算机安排工作,计算机再把结果显示出来,这样的程序就被称为控制台!!
——>但是在日常生活中却不常用,更常见的交互方式是图形化界面 (如我们平时用到的 QQ, 浏览器, steam 等, 都不需要用户输入命令,而只是通过鼠标点击窗口点击按钮的方式来操作.)
4.2 输出print
Python 使用 print 函数输出到控制台 不仅能输出一个字符串, 还可以输出一个其他类型的变量
更多的时候, 我们希望能够输出的内容是混合了字符串和变量的.
4.3 输入input
python 使用 input 函数, 从控制台读取用户的输入
五、运算符
5.1 算数运算符
像 + - * / % ** // 这种进行算术运算的运算符, 称为 算术运算符
1、除法的第一个问题:除0错误
这种运行时出现的错误也叫做“抛出异常”
如果程序运行中抛出异常,程序直接就终止了,异常的代码后面也不会执行
2、除法的第二个问题: 截断
整数除以整数,如果除不尽得到的会是小数,不会出现截断的情况
// 是取整除法 会“向下取整”
5.2 关系运算符
像 < >= == != 这一系列的运算符称为 关系运算符, 它们是在比较操作数之间的关系.
运算符不光可以比较数字,还可以根据字典序比较字符串!!
C和Java不用==和!=比较字符串(小众)
浮点数用==可能存在风险
思考:这种误差难道真的不会造成影响吗??
——>理论会影响,但是工程角度基本可以忽略不计!!
5.3 逻辑运算符
像 and or not 这一系列的运算符称为 逻辑运算符
and 并且. 两侧操作数均为 True, 最终结果为 True. 否则为 False. (一假则假)
or 或者. 两侧操作数均为 False, 最终结果为 False. 否则为 True. (一真则真)
not 逻辑取反. 操作数本身为 True, 则返回 False. 本身为 False, 则返回 True.
Python支持连续>和<
短路求值
5.4 赋值运算符
赋值,左侧必须是变量,右侧必须是数据 ——>相当于把右侧的数据填充到左侧的空间中
链式赋值(不推荐)
多元赋值(少用,但可以不创建第三个变量的情况下交换变量,因为赋值是同时进行的)
5.5 复合赋值运算符
Python 还有一些 复合赋值运算符. 例如 += -= *= /= %=
5.6 其他...
除了上述之外, Python 中还有一些运算符, 比如 身份运算符 (is, is not), 成员运算符 (in, not in), 位运算符 ( & | ~ ^ >) 等.
六、扩展