什么是计算机语言
- 计算机就是一台用来计算的机器,人让计算机干什么计算机就干什么,但是需要通过计算机的语言来控制计算机(编程语言)
- 计算机语言的发展经历了三个阶段:
- 机器语言:通过二进制编码来编写程序,执行效率高,但编写麻烦
- 汇编语言:使用符号来代替机器码,编写完成后,需要将符号转换为机器码,然后再由计算机执行,符号转换为机器码的过程称为汇编。但是汇编语言一般只适用于某些硬件,兼容性比较差。
- 高级语言:高级语言的语法基本和现在的英语语法类似,并且和硬件的关系没那么紧密了。
编译型语言和解释型语言
- 编译型语言:会在代码执行前,将代码编译为机器码,然后将机器码交由计算机执行。执行速度快,但跨平台性比较差。
- 解释型语言:不会在执行前进行编译,而是一边执行,一边编译。执行速度较慢(现在硬件条件越来越好,所以也没慢多少),但是跨平台性好。
Python介绍
Python是解释型语言,其设计哲学是简洁、易读。
Python的用途:
- WEB应用
- 编写爬虫
- 科学计算
- 自动化运维
- 大数据
- 云计算
- 人工智能
基本概念
- 表达式:类似于数学公式的东西,一般仅仅用来计算一些结果。
- 语句:在程序中语句一般需要完成某种功能,比如打印信息、获取信息、为变量赋值…
- 程序(program):程序由语句和表达式构成
- 函数(function):专门用来完成特定的功能。分为内置函数和自定义函数。
基本语法
- 严格区分大小写
- python中的每一行就是一条语句(以换行结束)
- python中每一条语句不要过长(规范中建议每行不要超过80字符)
可以使用反斜杠开分开一行print('5454515215156465456\ 456')
- python是缩进严格的语言:不要随便缩进!!
- 注释:使用#来表示注释。习惯上,#号后面跟一个空格
字面量和变量
-
字面量就是一个一个的值:1,2.1,‘Hello’
字面量所表示的就是它的字面的值,在程序中可以直接使用字面量 -
变量(variable)可以用来保存字面量,并且变量中保存的字面量是不定的
变量本身没有任何意思,它会根据不同的字面量表示不同的意思
变量和标识符
变量:
- python中使用变量,不需要声明,直接赋值
- 在使用变量前,需要赋值
- python是动态类型的语言,可以为变量赋任意类型的值,也可以任意修改变量的值
标识符:
- 在python中所有可以自主命名的内容都属于标识符,比如变量名、函数名、类名
- 标识符必须符合规范:
· 标识符中可以含有字母、数字、下划线,但是不能以数字开头
· 标识符不能是python中的关键字和保留字
命令规范:
- 下划线命名法:所有字母小写,单词之间使用下划线分割。例如:max_length
- 驼峰命名法: 每个单词首字母大写,其余字母小写。例如:MaxLength
数据类型
数据类型指的是变量的值的类型,也就是为变量赋哪些值
数值型:
整数:
- python中所有的整数都是int类型;
- 整数的大小没有限制,可以是一个无限大的数
- 可以使用下划线来分割一个很长的数字
a = 1_000_000
print(a)
- 其它进制的整数:二进制0b开头,八进制0o开头,十六进制0x开头
浮点数:
- 在python中,所有小数都是float类型
- 对浮点数进行运算时,有可能得到一个不精确的结果
字符串型:
-
字符串用来表示一串文本信息,字符串是程序中使用的最多的数据类型。
-
在python中字符串需要用引号引起来。可以是单引号,也可以是双引号。但是不要混着用,引号必须成对。
-
引号可以嵌套,但是嵌套的引号必须是不同的。
print("子曰:‘学而时习之,不亦乐乎’")
-
引号不能跨行使用,除非使用反斜杠分隔
print('锄禾日当午,\ 汗滴禾下土,\ 谁知盘中餐,\ 粒粒皆辛苦。')
-
三重引号可以跨行使用,并且保留字符串的格式
s = '''锄禾日当午, 汗滴禾下土, 谁知盘中餐, 粒粒皆辛苦。''' print(s)
-
转义字符:使用反斜杠作为转义字符
print("子曰:\"学而时习之,不亦乐乎\"") print('锄禾日当午,\n汗滴禾下土,\n谁知盘中餐,\n粒粒皆辛苦。')
转义字符 | 含义 |
---|---|
\’ | 单引号 |
\" | 双引号 |
\\ | 反斜杠 |
\n | 换行 |
\t | 制表符 |
\uxxxx | unicode编码的xxxx代表的字符 |
- 格式化字符串
- 可以使用+号拼接字符串。(但在python中不常见,因为字符串不能和其它类型的值相加)
a = "hello" print("a = " +a)
- print函数可以放两个参数,这两个参数没有类型的要求
a = 123 print("a =", a) # 自带空格进行分隔
- 用字符串的占位符
s = "1232 %s"%"123" t = "Hello %s Hello %s"%("孙悟空", "唐僧") e = "Hello%3s"%("12") # 最少为3个字符,不够的话用空格代替 g = "Hello%3.5s"%"12345678" # 最少3个字符,最多5个字符,多了截去 f = "Hello%3.5s"%12.3456789 h = "Hello%3.5f"%12.3456789 print(s) print(t) print(e) print(g) print(f) print(h)
- 格式化字符串
在字符串前加个f可以创建一个格式化字符串
在格式化字符串中可以直接嵌入变量b = "xiaoxin" a = f"Hello {b}" print(a)
- 练习:用这四种方式显示"欢迎 xiaoxin 光临"
name = "xiaoxin" print("欢迎 " + name + " 光临") print("欢迎", name, "光临") print("欢迎 %s 光临"%name) print(f"欢迎 {name} 光临")
- 可以使用+号拼接字符串。(但在python中不常见,因为字符串不能和其它类型的值相加)
- 字符串的复制(将字符串和数字相乘)
a = "abc" a = a * 5 print(a)
布尔值(bool):
- 布尔值主要用来做逻辑判断
- 一共两个值,True和False
- 布尔值实际上也相当于整型,1为True,0为False
None(空值):
就是什么也没有的值
类型检查
函数 type(),用来检查值的类型
a = 123
b = "123"
print(a)
print(b)
print(type(a))
print(type(b))
对象
-
python是一门面向对象的语言!! 一切皆对象
-
每个对象中保存三种数据:id、type、value
id:标识对象的唯一性,CPython中,其实就是内存地址。用id()函数查看。对象一旦创建,则不能改变。
type:表示对象所属的类型:int、str、float、bool…类型决定了对象具有的功能。python是强类型语言,对象一旦创建,类型不能改变。用type()函数查看类型。
value:值就是对象中存储的具体数据。可变对象的值可以改变,不可变对象的值不能改变(目前学的都是不可变对象)。
变量与对象
- python中,变量相当于是给对象起了个别名。
- 变量中并没有保存值,而是对象的id,方便通过对象id找到该对象。
- 变量中保存的对象,只有在为变量重新赋值时才会改变。
- 变量和变量之间是相互独立的,修改其中一个,不会改变另一个。
类型转换
-
所谓类型转换,就是将一个类型的对象,转换成另一个类型的对象。
-
所谓的转换,其实是创建了一个新的对象,并返回了新对象的id
-
类型转换一共四个函数:int()、str()、float()、bool()
-
int():将其他类型的函数转换为整型
布尔型:True变为1,False变为0 浮点型:截取整数部分 字符串型: 字符串是合法的整数表示:直接转换 字符串不是合法的整数表示:报错 None型:报错
-
float() 和 int() 基本一致,不同的是它转换成浮点数。而且,float() 可以将整型表示的字符串转换为浮点数,但是int() 不能将浮点型表示的字符串转换为整型。
-
str() 将对象转换为字符串类型的对象。
-
bool() 将对象转换为布尔值类型的对象。任何类型的对象都可以转
所有表示为空性的对象(0,0.0,''、None),都会转换为False。 其余的表示都会转换为True。
运算符(操作符)
-
运算符可以对一个值或多个值进行运算或各种操作
-
运算符的分类:
算术运算符 赋值运算符 比较运算符(关系运算符) 逻辑运算符 条件运算符(三目运算符)
-
算术运算符:
+:加法运算,如果是两个字符串,则做字符串拼接操作 -:减法运算 *:乘法运算,如果字符串和整数相乘,则会将字符串重复指定次数 /:除法运算,运算时总会返回一个浮点类型 //:整除运算符,返回除法操作后的整数 %:除余运算符,返回除法操作的余数 **:幂运算符,做幂运算
-
赋值运算符
=:将等号右侧的值赋给等号左侧的变量 +=:a += 5 等价于 a = a + 5 -=:a -= 5 等价于 a = a - 5 *=:a *= 5 等价于 a = a * 5 /=:a /= 5 等价于 a = a / 5 **=: a **=5 等价于 a = a ** 5 //=: a //= 5 等价于 a = a // 5 %=:a %=5 等价于 a = a % 5
-
关系运算符
比较两个操作数的关系。关系运算符总会返回一个布尔值。
不支持字符串跟数值比,但是字符串可以跟字符串比> 大于 < 小于 == 等于 >= 大于等于 <= 小于等于 != 不等于
以上比较均是比较对象的值,如果要比较对象的id,可以使用 is 或者 is not 关键字
a = 1 b = 2 print(a is 1)
关系运算符可以连用:
result = 1 < 2 < 3 # 等于 1 < 2 and 2 < 3 result = 10 < 20 > 15 # 等于 10 < 20 and 20 > 15
-
逻辑运算符
逻辑运算符主要用来做一些逻辑判断
not 逻辑非:对符号右侧的值进行非运算。对于布尔值,True变成False,False变为True。 对于非布尔值,会先转换为布尔值再做非运算。 and 逻辑与:如果有非布尔值的操作数,同样地也会将其转换为布尔值来参加运算。 python中的与运算是短路与运算。 or 逻辑或:对符号两侧的值进行或运算。如果有非布尔值参加运算,同样也会先转换为布尔值。 python中的或运算是短路或运算。
注意:如果参与运算的两侧都是非布尔值,则返回能够结束运算的最后一个值。例如 1 and 2 则返回 2。因为运算到达 2 的时候才能确定这个式子的结果,而 0 and 1 返回 0,因为短路运算,到0的时候就能确定式子的结果了。
-
条件运算符(三目运算符)
语法:语句1 if 条件表达式 else 语句2
获取a和b中的较大值:
a = 10 b = 20 max = a if a > b else b
-
运算符的优先级