(一)开发语言
1、高级语言
- 设计目标是让编程更加接近人类自然语言和数学表达,从而降低学习难度和提高开发效率。与机器语言和汇编语言相比,高级语言不依赖于具体的硬件结构,具有更高的可读性和可移植性
- 生成字节码,背后是C语言
- 常见高级语言:
- Java:面向对象,最大的特点是跨平台性,编写的代码可以在多种操作系统上运行,可前端可后台,丰富的类库和框架,如Spring、Hibernate等,可以大大提高开发效率,执行效率比Python高,做企业级应用更成熟
- Python:简洁、易读且功能强大,语法简洁易懂,上手容易,可前端可后台,开发效率比Java高,执行效率低于Java,Python应用领域广泛,如Web开发、数据分析、机器学习等领域。
- JavaScript:主要用于Web前端开发,是前端技术的重要组成部分。它可以实现动态交互效果,为网页提供丰富的功能。
- PHP:只适用于写网站页面。
- C#:面向对象,主要用于Windows平台的开发
- C++:面向对象,继承了C语言的优点并进行了扩展。它支持多种编程范式,包括过程化、面向对象等。C++具有高效性和灵活性,特别适用于系统开发、游戏开发等领域。
- Go:又称Golang,是由Google开发的一种静态强类型、编译型语言。它具有内存安全、垃圾回收、结构形态及CSP-style并发计算等特性,适用于系统编程、云计算和分布式系统等领域。
- ruby:动态、面向对象,语法优雅和高效,应用于Web开发,尤其是Ruby on Rails框架。
- ...
2、低级语言
- 与计算机硬件直接交互的编程语言,其指令集和操作与计算机的硬件密切相关。相较于高级语言,低级语言更接近计算机底层,有以下特点:
- 编写和维护难度大。
- 生成机器码,需要注意内存管理。
- 直接控制硬件:低级语言提供了对计算机硬件的直接访问和控制的能力。
- 高效率:由于低级语言更接近计算机硬件,它可以更有效地利用计算机的资源,执行速度更快。
- 灵活性强:低级语言提供了更高度的编程灵活性,程序员可以根据需求自定义指令和数据结构4。
- 适合底层开发:低级语言特别适合进行底层开发,例如操作系统、设备驱动程序和嵌入式系统的开发
常见低级语言:
- C语言
- 汇编语言
- 机器语言
3、Python种类:对程序员而言只需要学会一套规则。
1)通常意义说的Python都是CPython
2)JPython
3)IronPython
4)JavaScriptPython
5)RubyPython
6)……
7)pypy:CPython开发的Python,相当于先执行一次得到机器码,再执行机器码,速度最快,但功能还不够稳定。
4、python安装
Python解释器(内存管理,垃圾回收机制) 版本Python2和Python3:
- Windows:官网安装
- Linux:详查https://www.cnblogs.com/wupeiqi/articles/5433925.html
(二)python初识
1、源文件类型
源文件后缀名在解释器运行时可以随意,建议.py,但是导入模块必须是.py
2、命令行交互模式
设置好环境变量,进入控制台直接输入命令python2或python3,即可进入交互界面
3、运行python程序
- 控制台直接输入命令python 源文件
- 利用IDE工具,右键菜单点击run选项
4、源文件格式
4.1 源文件头部说明
- #!/usr/bin/env python:首行(可选),Linux中用./.py源文件的命令运行(需要先加可执行权限)Python解释器时,指定Python解释器路径
- # -*- coding:utf8 -*-:次行(可选),指定字符编码为utf8(utf8能用多少位表示这个字符就用多少位,中文用3个字节表示,unicode万国码,至少用16位表示,gbk专中国用,2个字节表示中文),Python3默认是utf8,不用写,Python2默认使用ASCII编码(8位表示,最多表示25个字符),不能识别中文,要写这句
- 注1:这两行必须紧挨着写在文件头部,如果中间穿插代码,下面的就不生效了。
- 注2:utf8可以和unicode之间转换,gbk也可以和unicode之间转换,但utf8和gbk之间不能直接转换,Python3内部会做utf8到unicode,再从unicode到gbk的转换,所以用gbk的终端打开utf8的源文件可以正常显示中文,而Python2内部没做这个转换,所以中文会显示乱码。
- 注3:字符串前面加u,代表用原生的utf8编码,中文就不会显示乱码
4.2 注释
解释代码的内容,不会影响程序运行:
- 单行注释:#注释内容
- 多行注释:"""注释内容"""
4.3 变量名
由字母、数字、下划线组成的标识符,不能以数字开头,不能是关键字,不能与内置的变量名和方法名重复,尽量有意义,多单词用_连接。
4.4 关键字
在Python中有特殊含义的标识符,Python的关键字数量可能会随着版本的更新而有所变化,但通常包含以下几类:
- 数据类型:int、float、complex、str、list、set、dict、tuple、bool
- 布尔操作符:
False
、True
、not
、and
、or
- 控制流语句:
if
、elif
、else
、for
、while
、break
、continue
- 函数定义:
def
类定义:class
- 异常处理:
try
、except
、finally
- 模块导入:
import
、from
- 变量声明:
global
、nonlocal
- 其他特殊用途:
assert
、pass
、raise
、return
5、python基本语法
5.1 变量的概念及定义
- 变量的概念:程序就是处理一系列状态的变化,定义变量是为了记录状态的变化,变量的值存放的是状态。
- 定义变量时,无需声明变量的数据类型,直接对变量赋值后就可以使用,python解释器会自动根据变量值判断它的数据类型。
- 例如:name="alex",就定义了一个值为“alex”的字符串(str)变量
- id(变量名):查看变量指向的内存地址。
5.2 数据类型
可变不可变:重新赋值后,变量指向的内存地址是否变化,如变化,是不可变类型,一旦创建就不可修改,hashable(可哈希),如不变,是可变类型,创建后可以修改,unhashable(不可哈希)。
- 可变类型:列表、字典、set集合
- 不可变类型:字符串、数字、元组、frozenset集合(创建:frozenset(set集合))
访问方式:
- 顺序访问:字符串、列表、元组
- 循环遍历访问:集合
- 映射访问:字典
- 直接访问:数字
- 字典查询速度比列表快,但占用空间更大。
存放元素个数:
- 容器类型:列表、元组、字典
- 原子类型(只能存放一个值):数字、字符串、布尔值
(1)数字Numbers
不可变类型,Python3支持三种不同的数值类型:
- int:整数类型,Python3中整型没有大小限制,不管多大数字都是int类型,Python2里int有一个数值范围,超过int范围是long长整型。
- float:浮点数类型,可以用科学计算法表示,例如2.5e2=250.0。
- complex:复数类型,由实数部分和虚数部分构成,可以用a+bj表示。
(1.1)定义方式
'''定义int数字变量'''
i_num_1 = 1 # 直接给变量赋值int数字
i_num_2 = int(2) # 用int()方法创建int对象
# int()方法也可做float->int,以及纯数字字符(不包含小数点)的str->int的强制类型转换,如下:
i_num_3 = int(2.9) # 将float数字2.9强制转换为int数字,只会截取小数点前面的数字,结果是2
i_num_4 = int("123") # 将纯数字字符的str字符串"123",强制转换为int数字,直接去掉引号,结果是123
'''定义float数字变量'''
f_num_1 = 1.2 # 直接给变量赋值flot数字
f_num_2 = float(2.3) # 用float()方法创建float对象
# float()方法也可做int->float和纯数字字符(包含小数点)的str->float的强制类型转换,如下:
f_num_3 = float(2) # 将int数字2强制转换为float数字2.0
f_num_4 = float("12.3") # 将纯数字字符(包含小数点)的str字符串"12.3",强制转换为float数字,直接去掉引号,结果是12.3
'''定义complex数字变量'''
c_num_1 = 1.2+1j # 直接给变量赋值complex数字,j前面的数字就算是1也不可省略,结果是(1.2+1j)
c_num_2 = complex(2.3+0j) # 用complex()方法创建complex对象
# complex()方法也可做int/float->complex和纯复数字符(包含括号、小数点和+虚数j)的str->float的强制类型转换,如下:
c_num_3 = complex(2) # 将int数字2强制转换为complex数字(2+0j)
c_num_4 = complex(2.5) # 将float数字2.5强制转换为complex数字(2.5+0j)
c_num_5 = complex("(12.3+j)") # 将纯复数字符(包含括号、小数点和+虚数j)的str字符串"(12.3+j)",强制转换为complex数字,直接去掉引号&#x