第一章 Python入门
1.计算机语言
计算机就是一台用来计算机的机器,人让计算机干什么计算机就得干什么!
需要通过计算机的语言来控制计算机(编程语言),计算机语言其实和人类的语言没有本质的区别,不同点就是交流的主体不同!
计算机语言发展经历了三个阶段:
1.1 发展阶段
1.1.1 机器语言
- 机器语言通过二进制编码来编写程序
- 执行效率高但是编写麻烦
1.1.2 汇编语言(符号语言)
- 使用符号来代替机器码
- 编写程序时,不需要使用二进制,而是直接编写符号
- 编写完成后,需要将符号转换为机器码,然后再由计算机执行,(符号转换为机器码的过程称为汇编)
- 将机器码转换为符号的过程,称为反汇编
- 汇编语言一般只适用于某些硬件,兼容性比较差
1.1.3 高级语言
- 高级语言的语法基本和现在英语语法类似,并且和硬件的关系没有那么紧密了
- 也就是说我们通过高级语言开发程序可以在不同的硬件系统中执行
- 并且高级语言学习起来也更加的容易,现在我们知道的语言基本都是高级语言
- 举例:C、C++、C#、Java、JavaScript、Python…
2. 分类(按转换方式)
计算机只能识别二进制编码(机器码),所以任何的语言在交由计算机执行时必须要先转换为机器码,根据转换时机的不同,语言分成了两大类:
2.1 编译型语言
- 过程: 源码—> 编译 —> 编译后的机器码—>交给计算机执行
- 特点:
- 执行速度快
- 跨平台性差
- 例子:c
2.2 解释型语言
- 过程: 源码—> 解释器—> 解释执行:不会在执行前对代码进行编译,而是在执行的同时一边执行一边编译
- 特点:
- 执行速度满
- 跨平台性高
- 例子:Python、Java、JavaScript
2. python的介绍
Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/),是一种广泛使用的高级编程语言,属于通用型编程语言,由吉多·范罗苏姆创造,第一版发布于1991年。可以视之为一种改良(加入一些其他编程语言的优点,如面向对象)的LISP。作为一种解释型语言,Python的设计哲学强调代码的可读性和简洁的语法(尤其是使用空格缩进划分代码块,而非使用大括号或者关键词)。相比于C++或Java,Python让开发者能够用更少的代码表达想法。不管是小型还是大型程序,该语言都试图让程序的结构清晰明了。
3. Python的基础知识
3.1 Python程序构成
- Python程序由模块组成,模块对应于后缀为.py的源文件,一个Python程序由一个或多个模块构成;
3.1.1 表达式
- 表达式用于创建和处理对象,如果在交互模式中输入一个表达式,解释器会自动将表达式的结果输出
3.1.2 语句
- 语句是Python程序的过程构造块,用于创建对象、变量赋值、调用函数、控制分支、创建循环等,语句包含表达式。
3.1.3 程序
- 程序可以看作由语句和表达式构成的
3.1.4函数(function)
-
函数就是一种语句,函数专门用来完成特定的功能
-
样式
创建函数
def 函数名(形参):
函数体
调用函数
函数名(实参列表)
-
分类:
-
内置函数:由Python解释器提供的函数,可以在Python中直接使用
-
自定义函数:程序员自主创建的函数
-
模块函数:通过import语句,可以导入模块module,然后使用module.function(arguments)的形式调用模块中的函数
-
函数API
-
-
两个要素:
- 参数:
- 实参: 在实际调用函数的时候所改的参数
- 形参:定义函数时所设定的可传入参数的类型
- 返回值:返回值是函数的返回结果,不是所有的函数都有返回值
- 参数:
3.2 基本语法:
3.2.1 基本规范
-
严格区分大小写
-
每一行就是一个语句,每条语句以换行结束
-
每一行语句建议不要太长,规范建议<80个字符
-
一条语句可以分多行编写,多行编写时语句后边以\结尾
-
Python是缩进严格的语言,所以在Python中不要随便写缩进
-
在Python中使用#来表示注释,#后的内容都属于注释,注释的内容将会被解释器所忽略,一般习惯上#后边会跟着一个空格,通过注释来对程序进行解释说明
-
在Python中将包含在一对三引号(’’’……’’’)或者("""……""")之间,并且不属于任何语句的内容认为是多注释
Python语言遵循的命名规则
3.3 字面量和变量
- 字面量就是一个一个的值,所表示的意思就是它的字面的值,在程序中可以直接使用字面量
- 变量(variable):变量可以用来保存字面量,并且变量中保存的字面量是不定的变量本身没有任何意思,它会根据不同的字面量表示不同的意思。
- 一般我们在开发时,很少直接使用字面量,都是将字面量保存到变量中,通过变量来引用字面量
3.4 数据类型
Python数据类型定义为一个值的集合以及定义在这个值集上的一组运算操作。
3.4.1基本类型
-
数据类型指的就是变量的值得类型,也就是可以为变量赋哪些值
-
数值:整形,浮点型,复数
-
字符串
# 格式化字符串 a = 'hello' # 字符串之间也可以进行加法运算 # 如果将两个字符串进行相加,则会自动将两个字符串拼接为一个 a = 'abc' + 'haha' + '哈哈' # a = 123 # 字符串只能不能和其他的类型进行加法运算,如果做了会出现异常 TypeError: must be str, not int # print("a = "+a) # 这种写法在Python中不常见 a = 123 # print('a =',a) # 在创建字符串时,可以在字符串中指定占位符 # %s 在字符串中表示任意字符 # %f 浮点数占位符 # %d 整数占位符 b = 'Hello %s'%'孙悟空' #---->Hello 孙悟空 b = 'hello %s 你好 %s'%('tom','孙悟空') -------> hello tom 你好 孙悟空 b = 'hello %3.5s'%'abcdefg' # ---------->hello abcde %3.5s字符串的长度限制在3-5之间 b = 'hello %s'%123.456 #------>hello 123.456 b = 'hello %.2f'%123.456 #------>hello 123.46 注意四舍五入 b = 'hello %d'%123.95 #---->hello 123 b = '呵呵' # print('a = %s'%a) # 格式化字符串,可以通过在字符串前添加一个f来创建一个格式化字符串 # 在格式化字符串中可以直接嵌入变量 c = f'hello {a} {b}' #-----> hello 8 5 print(f'a = {a}') # 练习 创建一个变量保存你的名字,然后通过四种格式化字符串的方式 # 在命令行中显示,欢迎 xxx 光临!----- name = 'name' print(f'欢迎{name} 光临!')
-
布尔值:True,False(注意:Python中严格要求首字母大写)
-
空值
3.4.2 对象(object)
-
基本概念
- Python是一门面向对象的语言一切皆对象!
- Python对象是位于计算机内存中的一个内存数据块
- 程序运行当中,所有的数据都是存储到内存当中然后再运行的
- 对象就是内存中专门用来存储指定数据的一块区域
- 对象实际上就是一个容器,专门用来存储数据
- 数值、字符串、布尔值、None都是对象
-
对象的结构:(每个对象中都要保存三种数据)
-
id(标识)
- 标识(identity)用于唯一标识一个对象,通常对应于对象在计算机内存中的位置。使用内置函数id(obj1)可返回对象obj1的标识,通过内置的id()函数,可以获取一个对象唯一的id标识(CPython的实现为内存存放位置)
id用来标识对象的唯一性,每一个对象都有唯一的id
对象的id就相当于人的身份证号一样可以通过id()函数来查看对象的id
id是由解析器生成的,在CPython中,id就是对象的内存地址
对象一旦创建,则它的id永远不能再改变 -
type(类型)
-
类型(type)用于表示对象所属的数据类型(类),数据类型(类)用于限定对象的取值范围,以及允许执行的处理操作。使用内置函数type(obj1)可以返回对象obj1所属的数据类型
类型用来标识当前对象所属的类型
比如:int str float bool 。。。
类型决定了对象有哪些功能
通过type()函数来查看对象的类型
Python是一门强类型的语言,对象一旦创建类型便不能修改 -
value(值)
- 值(value)用于表示对象的数据类型的值。使用内置函数print(obj1)可返回对象obj1的值
值就是对象中存储的具体的数据
对于有些对象值是可以改变的
对象分成两大类,可变对象 不可变对象> 对于有些对象值是可以改变的 > 对象分成两大类,可变对象 不可变对象
-
>>> 123 ------> 123
>>> id(123) ------> 2053631824
>>> type(123) ------> <class 'int'>
>>> print(123) ------> 123
-
对象内存示意
- Python程序运行时,在内存中会创建各种对象(位于堆内存中),通过赋值语句,将对象绑定到变量(位于栈内存中),通过变量引用对象,进行各种操作
- 如果一个对象不再被任何有效作用域中的变量引用,则会通过自动垃圾回收机制,回收该对象占用的内存
- 多个变量可以引用同一个对象
-
变量的强数据类型示例
-
Python是强类型语言,即每个变量指向的对象均属于某个数据类型,即只支持该类型允许的运算操作
-
3.4.3 类型转换
-
所谓的类型转换,将一个类型的对象转换为其他对象
-
类型转换不是改变对象本身的类型,而是根据当前对象的值创建一个新对象
-
常见的进制转换函数:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FfL5iO2u-1583221163514)(media/Base_conversion.png)]
# 类型转换四个函数 int() float() str() bool() # int() 可以用来将其他的对象转换为整型 # 规则: # 布尔值:True -> 1 False -> 0 # 浮点数:直接取整,省略小数点后的内容 # 字符串:合法的整数字符串,直接转换为对应的数字 # 如果不是一个合法的整数字符串,则报错 ValueError: invalid literal for int() with base 10: '11.5' # 对于其他不可转换为整型的对象,直接抛出异常 ValueError # float() 和 int()基本一致,不同的是它会将对象转换为浮点数 # str() 可以将对象转换为字符串 # True -> 'True' # False -> 'False' # 123 -> '123' # 。。。 # bool() 可以将对象转换为布尔值,任何对象都可以转换为布尔值 # 规则:对于所有表示空性的对象都会转换为False,其余的转换为True # 表示的空值:0 、 None 、 ''
3.5运算符(操作符)
-
运算符可以对一个值或多个值进行运算或各种操作
-
比如 + 、-、= 都属于运算符
# 相等和不等比较的是对象的值,而不是id # is 比较两个对象是否是同一个对象,比较的是对象的id # is not 比较两个对象是否不是同一个对象,比较的是对象的id # 在Python中可以对两个字符串进行大于(等于)或小于(等于)的运算, # 当对字符串进行比较时,实际上比较的是字符串的Unicode编码 # 比较两个字符串的Unicode编码时,是逐位比较的 # 利用该特性可以对字符串按照字母顺序进行排序,但是对于中文来说意义不是特别大 # 注意:如果不希望比较两个字符串的Unicode编码,则需要将其转换为数字然后再比较
-
运算符的分类:
-
算术运算符
-
赋值运算符
-
比较运算符(关系运算符)
-
逻辑运算符
# Python中的或运算是短路的或,如果第一个值为True,则不再看第二个值 # Python中的与运算是短路的与,如果第一个值为False,则不再看第二个值
-
条件运算符(三元运算符)
# 条件运算符(三元运算符) # 语法: 语句1 if 条件表达式 else 语句2 # 执行流程: # 条件运算符在执行时,会先对条件表达式进行求值判断 # 如果判断结果为True,则执行语句1,并返回执行结果 # 如果判断结果为False,则执行语句2,并返回执行结果 # 练习: # 现在有a b c三个变量,三个变量中分别保存有三个数值, # 请通过条件运算符获取三个值中的最大值 # print('你好') if False else print('Hello') a = 30 b = 50 # print('a的值比较大!') if a > b else print('b的值比较大!') # 获取a和b之间的较大值 max = a if a > b else b print(max)
-
-
运算符的优先级
a = 40 b = 50 c = 30 # 通过条件运算符获取三个值中的最大值 # max = a if a > b else b # max = max if max > c else c max = a if (a > b and a > c) else (b if b > c else c) # 不推荐这么使用 # max = a if (b < a > c) else (b if b > c else c) # print(max) # 运算符的优先级 # 和数学中一样,在Python运算也有优先级,比如先乘除 后加减 # 运算符的优先级可以根据优先级的表格来查询, # 在表格中位置越靠下的运算符优先级越高,优先级越高的越优先计算 # 如果优先级一样则自左向右计算 # 关于优先级的表格,你知道有这么一个东西就够了,千万不要去记 # 在开发中如果遇到优先级不清楚的,则可以通过小括号来改变运算顺序 a = 1 + 2 * 3 # 一样 and高 or高 # 如果or的优先级高,或者两个运算符的优先级一样高 # 则需要先进行或运算,则运算结果是3 # 如果and的优先级高,则应该先计算与运算 # 则运算结果是1 a = 1 or 2 and 3 # print(a) # 逻辑运算符(补充) # 逻辑运算符可以连着使用 result = 1 < 2 < 3 # 相当于 1 < 2 and 2 < 3 result = 10 < 20 > 15 print(result)