写在前面:
笔记是根据老师发的几次的知识点的汇总。如果有错误的地方可以在评论区指正。
目录
Python相关知识
python,一种计算机语言
语言的发展历程:
机器语言
符号语言(汇编)
- 用符号来代替机器01,将符号语言=》机器语言过程汇编,将机器语言=>符号语言,反汇编
高级语言
开始说人话,和硬件结合的不是那么紧密,学起来也较简单C C++ Java javascript Python
语言的编译和解释:
根据语言转换为机器语言的时间不同分为编译型和解释型
编译型: C语言
在执行之前就会被编译成机器码
优点:速度快,效率高
缺点:跨平台较差
解释型:python
(java 刚出来的时候作为解释型,后来JIT ,演变成半解释半编译型)
缺点:执行速度较慢
Python的介绍:
Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆 于1990 年代初设计,作为一门叫做ABC语言的替代品。设计出来给非专业程序员用的教学语言。
Python 蟒蛇 1991 第一个解释器诞生
Life is short you need Python. 人生苦短,你需要Python
Python的优缺点:
优点:
1. 简单明了,学习曲线低,容易上手
2. 开源,跨平台
3. 第三方支持好,包多,功能多
缺点:
1. 执行效率稍低
2. 代码无法加密
3. 工程化相对较差,不够严谨,太灵活
适合做什么:
WEB后端,网络爬虫,自动化运维,自动化测试,科学计算、数据分析、数据可视化、机器学习、量化交易。
Python开发环境:
所谓开发环境就是安装Python的解释器
解释器种类:
- CPython 官方,用C语言编写的解释器
- PyPy 用Python语言编写的解释器
- Jython 用Java编写的解释器
- IronPython 用.net写的解释器
推荐使用Anaconda来搭建开发环境,适合做科学计算的Python发行版
如果比较熟悉了以后推荐去掉图形界面 miniconda来做环境
镜像地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/
检验安装是否成功,请在cmd模式下输入 python 回车检查是否启动环境
**更改conda的源**
在Anaconda中配置一个新的Environment,然后启动prompt
请在Anaconda的命令行中操作
```
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
```
开发工具 Jupyter Notebook:

高德纳是算法和程序设计技术的先驱者,计算机排版系统TeX和字型设计系统METAFONT的发明者,他因这些成就和大量创造性的影响深远的著作而誉满全球,荣获1974年度的图灵奖 。爱因斯坦《相对论》 费曼《量子电动力学》
literate programming
编程从让计算机读懂,进化到让机器去理解我们的想法
IPython 交互性的shell
Python基本语法
- Python严格区分大小写
- 每一行都是一条语句,以换行结束
- 规范建议每一行语句不要超过80个字符
- 一条语句可以分多行写,但是每行结束要用\来结尾
- 严格缩进,Python中没有用{}或者单词来代表语句块,是用缩进来代表的,4个空格
- Python的注释是用#
print('H\
ell\
o')
# print('H\
# ell\
# o')
print('Hello')
字面值和变量:
字面量就是一个值,1,2,3,'Hello'
变量(variable)可以用来保存字面量,并且变量中的字面量是不定的
变量本身就是一个标识,但是会根据存的字面量不同而表示不同的意思
变量和标识符:
java中
int i = 10;
必须要声明,类型要确定,或者类型推断,一个变量的存的类型是一定的
Python中使用变量,不需要声明,直接赋值
a = 10
所有变量一定要赋值后才可以使用
print(b)
NameError: name 'b' is not defined
Python命名规范:
命名规范(变量,类名,函数名)
- 标识符可以含有数字,字母、_,但是不能用数字开头 eg. a_1 _1a _a1 , 1_a(错)
- 不能用关键字和保留字,也不建议用函数名
- 一般用下划线分割单词或者用帕斯卡命名(驼峰法则)DoSomething do_something doSomething
Python数据类型:
1.整型
Python中的整数没有大小限制,可以无限大
a = 123_456_789 # 数字过长可以用下划线分割
a = 15
b = 0b1111 # 2进制
c = 0o17 # 8进制
d = 0x10 # 16进制
print(a)
print(b)
print(c)
print(d)
2.浮点型
Python中所有的浮点数都是float类型,浮点型无法保证精确度
a = 0.1+0.2
print(a)
# 0.30000000000000004
print(0.3 == 0.1 + 0.2) # False 浮点数计算用精确度达到一定范围来确定是否相等
3.布尔型(True / False 1/0)
# bool型本质是0,1,所以可以做整数运算
a = False + 1
print(a)
print(a == True)
# 1
# True
4.字符串
字符串的本质是一段不可变的序列
s = 'Hello' # 用引号括起来,可以是单引号,也可以是双引号,三引号,必须配对使用
s = '''床前明月光,
疑似地上霜。
举头望明月,
低头思故乡。''' # 排版格式会保留下来,三引号可以换行
print(s)
5.转义字符
\ 作为转义 和java相同
格式化字符
%s 表示任意字符占位
%d 表示整数占位
%f 表示浮点数占位
s = 'Hello %s'%'Zhangsan'
s2 = 'Hello %s 你有%d元钱'%('Zhangsan',199)
s3 = 'Hello %s 你有%d元钱,还欠贷款%f元钱'%('Zhangsan',199,99999.99)
print(s)
print(s2)
print(s3)
# Hello Zhangsan
# Hello Zhangsan 你有199元钱
# Hello Zhangsan 你有199元钱,还欠贷款99999.990000元钱
s4 = 'Hello %5.10s'%'Zhangsanmohanmodeali'
s5 = 'Hello %5.10s'%'Zh'# 字符串的长度在5-10个字符之间
print(s4)
print(s5)
# Hello Zhangsanmo
# Hello Zh
s6 = '存款是%.2f'%12345.6789
print(s6)
# 存款是12345.68
用f和{}来配合格式化
name = '张三'
rq = 1
print(f'Hello {name},{rq}是星期一')
# Hello 张三,1是星期一
用+拼接,只能拼接字符串(java可以把别的类型转化为字符串 Python不能这样做)
print('Hello'+ ' Zhangsan')
# Hello Zhangsan
print('Hello'+' Zhangsan'+ 1)
# TypeError: can only concatenate str (not "int") to str
6.空值
None #表示不存在
Python类型检查:
使用语句type()来检查类型
print(type(1))
print(type(1.1))
print(type(True))
print(type('abc'))
print(type(None))
print(type(print))
<class 'int'>
<class 'float'>
<class 'bool'>
<class 'str'>
<class 'NoneType'>
<class 'builtin_function_or_method'>
Python类型转换:
int() float() bool() str() 四个函数来转换类型
字符串转的时候一定要是合法数字字符
bool()可以将任何类型转换为布尔值,所有代表非空的都会变成True
a = 12345.6789
b = int(a)
print(b,type(b))
# 12345 <class 'int'> 直接取整,不四舍五入
c = '1234.5'
print(int(c))
# ValueError: invalid literal for int() with base 10: '1234.5'
print(float(c))
print(bool('True')) # True
print(bool('False')) # True
print(bool('false')) # True
print(bool(0)) # False
print(bool('')) # False
print(bool(None)) # False
print(bool('0')) # True
Python运算符
1.算术运算符
+ 加法,还可以拼接字符串
- 减法* 除了做乘法以外,还可以表示字符串重复次数
%
/ 除法,所有的结果总是浮点数
// 整除
** 幂运算
s = 'abc'
print(s*3)
a = 10
print(a**2) # 100 a的平方
print(a**0.5) # 3.1622776601683795
2.赋值运算符
+= -=
*= 除了数学的*=还可以表示字符串*=
/=
//=
%=
**=
3.关系运算符
> >= < <= == !=
is is not 比较两个对象是不是同一个对象,实质是比较对象的id
也可以用来比较字符串,实质比的是字符串的unicode的编码大小(同java)
print(True is 1) # False
print(1 == True) # True
print(id(1),id(True)) # is 的本质是比较id
4.逻辑运算符
and 与 or 或 not 非 (&& || !)
如果运算中出现非bool值,相当Python会对其做一个bool转换
print(True and 2) # 2 相当于 True
5.三元运算符
相当于java中的 int i = 2>1?2:1;
a = 10
b = 50
c = 80
max = a if a > b else b if b > c else c #使max等于三者中的最大值
print(max)
运算符优先级:
| ** | 幂运算 |
| -------------- | ------------ |
| * / % // | 乘除取模整除 |
| + - | 加,减 |
| > >= < <= | 比较运算符 |
| == != | 等于 |
| = %= /= *= ... | 赋值运算符 |
| not and or | 逻辑运算符 |
a = 1<2<3 # 1<2 and 2<3
print(a) # True
Python考试题型:
1.看程序写出运行结果(类似填空)
2.代码段填空题(来自例题/作业……)
3.编程题