第一章 Python基础
Python基础
- 1. 变量
- 2.基本数据类型
- 3.基本运算符
- 4.流程控制
- 5.练习题&面试题
- 5.1 简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释型?
- 5.2 声明变量注意事项有那些?
- 5.3 如何查看变量在内存中的地址?
- 5.4 or 和 and
- 5.5 为什么学Python
- 5.6 公司线上和开发环境用的什么系统
- 5.7 python和java、php、c、c#、c++ 等其他语言对比?
- 5.8 简述解释型和编译型编程语言
- 5.9 请列出至少5个PEP8规范
- 5.10 ascii、Unicode、utf-8、gbk的区别
- 5.12 字节码和机器码的区别
- 5.13 Python2和Python3的区别
- 5.14 列举字符串、列表、元组、字典每个常用的5个方法
1. 变量
1.1 什么是变量
变量,是用于在内存中存放程序数据的容器。
计算机的最核心功能就是“计算”, 计算需要数据源,数据源要存在内存里,比如我要把小明的姓名、身高、年龄信息存下来,后面程序会调用,怎么存呢,直接设置一个“变量名=值”, 就可以
1.2 变量的使用规则
程序是从上到下执行的,所以变量必须先定义,后调用, 否则会报错
1.3 变量的命名规则
- 变量名只能是 字母、数字或下划线的任意组合
- 变量名的第一个字符不能是数字
- 关键字不能声明为变量名
1.4 常用定义方式
1.驼峰体
2.下划线
2.基本数据类型
2.1什么是数据类型
人类可以很容易的分清数字与字符的区别,但是计算机并不能呀。,除非你明确的告诉它,1是数字,“汉”是文字,否则它是分不清1和‘汉’的区别的,因此,在每个编程语言里都会有一个叫数据类型的东东,其实就是对常用的各种数据类型进行了明确的划分,你想让计算机进行数值运算,你就传数字给它,你想让他处理文字,就传字符串类型给他。
2.2 数字
int(整型)
在64位系统上,整数的位数为64位,取值范围为-263~263-1,即-9223372036854775808~9223372036854775807
long(长整型)
跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
(自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。)
float (浮点型)
即小数
2.3 字符串
在Python中,加了引号的字符都被认为是字符串!
2.3.1 单引号、双引号有什么区别?
让我大声告诉你,单双引号木有毛线区别。只有下面这种情况 你需要考虑单双的配合
msg = "My name is Tony , I'm 19 years old!"
2.3.2 多引号什么作用呢?
作用就是多行字符串必须用多引号
msg = '''
今天我想写首小诗,
歌颂我的同桌,
你看他那乌黑的短发,
好像一只炸毛鸡。
'''
print(msg)
2.3.3 字符串拼接
数字可以进行加减乘除等运算,字符串呢?让我大声告诉你,也能?what fuck?是的,但只能进行”相加”和”相乘”运算。
注意,字符串的拼接只能是双方都是字符串,不能跟数字或其它类型拼接
2.4 布尔型(bool)
布尔类型很简单,就两个值 ,一个True(真),一个False(假), 主要用记逻辑判断
2.5 列表(List)
如果要把全班的人名在内存里存下来,用上面的字符串类型可以做到,但取的时候不方便。此时,用列表就比较合适。
>>> names = ["Alex","Jack","Rain","Rachel","Mack"]
>>> names[2]
>'Rain'
2.5.1 添加
元素的添加有2种方式,插入、追加
插入
>>>> names['Alex', 'Jack', 'Rain', 'Rachel', 'Mack']
>>>> names.insert(3,"小明") #3代表你想插入的位置
>>>> names['Alex', 'Jack', 'Rain', '小明', 'Rachel', 'Mack']
追加(添加到列表的尾部)
>>> names['Alex', 'Jack', 'Rain', '小明', 'Rachel', 'Mack']
>>> names.append("小强")
>>> names['Alex', 'Jack', 'Rain', '小明', 'Rachel', 'Mack', '小强']
2.5.2 修改
直接根据下标找到元素重新赋值即可
2.5.3 删除元素
这个不是通过下标了,是根据元素名字。
>>> names
['Alex', 'Jack', 'Rain', '小明', 'Rachel', 'Mack', '小强']
>>> names.remove("小明")
>>> names
['Alex', 'Jack', 'Rain', 'Rachel', 'Mack', '小强']
上面的命令会删除从左开始找到的第一个小明, 如果有多个小明,则只删除找到的第一个。
2.5.4 判断元素是否在列表里
>>> names
['Alex', 'Jack', 'Rain', 'Rachel', 'Mack', '小强']
>>> "Mack" in names
True
2.6 字典(dict)
字典是Python语言中唯一的映射类型
定义:{ key1:value 1,key 2:value 2 }
特性:
1.key-value 结构
2.key必须可hash、且必须为不可变数据类型,必须唯一
3.可存放任意多个值、可修改、可以不唯一
4.无序
2.6.1 字典的创建
person = {"name":"alex",'age':20}
#或者
person = dict(name = 'alex',age = 20)
2.6.2 字典的常见操作
增上改查
2.7 集合(set)
由一个或者多个确定的元素所构成的整体叫做集合
特性:
1.确定性(元素必须可以hash)
2.互异性(去重)
3.无序性(集合中的元素没有先后之分)
例如集合{3,4,5}和{3,5,4}算作同一个集合。
注意:集合存在的意义就算为了去重和关系运算
3.基本运算符
计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算。
4.流程控制
4.1 if…else
4.2 while
5.练习题&面试题
5.1 简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释型?
编译型语言:
x(源码) --> 编译 --> y(编译后的机器码)
特点:执行速度快,将整个代码全部编译后再执行,但是跨平台比较差。
解释型语言:
x(源码) --> 解释器(虚拟机) --> 解释执行
特点:执行速度比较慢,因为逐行解释再执行,但是跨平台性好。
编译类:C、C++、vb、Delphi
解释类:Perl、Ruby、Python
5.2 声明变量注意事项有那些?
1、变量名只能是 字母、数字和下划线的任意组合
2、变量名的第一个字符不能使数字
3、[and,print,as,not,or]等关键字不能作为变量名
4、变量名不能为中文、拼音;变量名单词不能过长:变量单词不达意
5.3 如何查看变量在内存中的地址?
age = 23
print(id(age))
5.4 or 和 and
v1=1 or 3
v2=1 and 3
v3=0 and 2 and 1
v4=0 and 2 or 1
v5=0 and 2 or 1 or 4
v6=0 or False and 1
结果: v1 = 1 v2 = 3 v3 = 0 v4 = 1 v5 = 1 v6 = False
基本运算规律
1.在不加括号时候, and优先级大于or
2.x or y 的值只可能是x或y. x为真就是x, x为假就是y
3.x and y 的值只可能是x或y. x为真就是y, x为假就是x
5.5 为什么学Python
优点
1、python语法非常优雅,简单易学
2、免费开源
3、跨平台,可以*移植
4、可扩展,可嵌入性强
5、第三方库丰富
应用领域
1、在系统编程中应用广泛,比如说shell工具。
2、在网络爬虫方面功能非常强大,常用的库如scrapy,request等
3、在web开发中使用也很广泛,如很多大型网站都用python开发的,如ins,youtube等,常用的框架如django,flask等
4、python在系统运维中应用广泛,尤其在linux运维方面,基本上都是自动化运维。
5、在人工智能,云计算,金融等方面也应用非常广泛。
5.6 公司线上和开发环境用的什么系统
线上用的centos和Ubuntu
系统开发环境用的windows,mac,还有Ubuntu。
5.7 python和java、php、c、c#、c++ 等其他语言对比?
Java C# PHP Python (开发效率高),这些语言本身不需要你去管理内存了。它们都有自己的虚拟机,对于开辟内存、释放内存都由这个虚拟机处理。
C 和 Python、Java、C#等C语言: 代码编译得到 机器码 ,机器码在处理器上直接执行,每一条指令控制CPU工作其他语言: 代码编译得到 字节码 ,虚拟机执行字节码并转换成机器码再后在处理器上执行Python 和 C Python这门语言是由C开发而来
对于使用:Python的类库齐全并且使用简洁,如果要实现同样的功能,Python 10行代码可以解决,C可能就需要100行甚至更多.
对于速度:Python的运行速度相较与C,绝逼是慢了Python 和 Java、C#等
对于使用:Linux原装Python,其他语言没有;以上几门语言都有非常丰富的类库支持对于速度:Python在速度上可能稍显逊色所以,Python和其他语言没有什么本质区别,其他区别在于:擅长某领域、人才丰富、先入为主
5.8 简述解释型和编译型编程语言
解释型语言编写的程序不需要编译,在执行的时候,专门有一个解释器能够将VB语言翻译成机器语言,每个语句都是执行的时候才翻译。这样解释型语言每执行一次就要翻译一次,效率比较低。
用编译型语言写的程序执行之前,需要一个专门的编译过程,通过编译系统,把源高级程序编译成为机器语言文件,翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高,但也不能一概而论,部分解释型语言的解释器通过在运行时动态优化代码,甚至能够使解释型语言的性能超过编译型语言。
5.9 请列出至少5个PEP8规范
每个缩进级别使用4个空格
每行代码的最大长度限制为79个字符
若是导入多个库函数,应该分开依次导入道路应按照以下顺序导入
a、标准库导入 b、相关的第三方库导入 c、本地应用程序的库导入
在表达式中避免无关的空格代码更改时,相应的注释也要随之更改
命名要规范,通俗易懂
5.10 ascii、Unicode、utf-8、gbk的区别
ascii 是最早美国用的标准信息交换码,把所有的字母的大小写,各种符号用 二进制来表示,共有256中,加入些拉丁文等字符,1bytes代表一个字符
Unicode是为了统一世界各国语言的不用,统一用2个bytes代表一个字符,可以表达2^16=65556个,称为万国语言,特点:速度快,但浪费空间
utf-8 为了改变Unicode的这种缺点,规定1个英文字符用1个字节表示,1个中文字符用3个字节表示,特点;节省空间,速度慢,用在硬盘数据传输,网络数据传输,相比硬盘和网络速度,体现不出来的
gbk 是中文的字符编码,用2个字节代表一个字符
5.12 字节码和机器码的区别
机器码是电脑CPU直接读取运行的机器指令,运行速度最快,但是非常晦涩难懂,也比较难编写,一般从业人员接触不到。
字节码是一种中间状态(中间码)的二进制代码(文件)。需要直译器转译后才能成为机器码。
5.13 Python2和Python3的区别
1.python2没有nonlocal关键字,要修改临时变量只能将其改成可变数据类型,如数组。b=[a]
2.print()函数代替print语句
3.Python3加入 Unicode 字符串,用以编码存储字符串。比如用 utf-8可以用来输入中文
4.Python3去掉long类型,新增了bytes。
5.Python 3整数之间做除法可以得到浮点数的结果,不需要进行数据格式转换1/2=0.5 Python 2整数int间除法结果为把运算结果去尾的整数1/2=0,3/2.0=1.5
6.Python3 中 range(),Python2 中 xrange()。
7.python2中的不等于号可以是!=或者<>,python3只能是!=
8.python2中raw_input()用来输入字符串,而python3中使用input()来输入字符串