程序设计人员。
一组计算机能识别和执行的指令,是实现某种需求的软件。
管理和控制计算机软件与硬件资源的程序;
隔离不同硬件的差异,使开发程序简单化。
例如,Windows,Linux,Unix。
主板--计算机的主要电路系统。
CPU --主要负责执行程序指令,处理数据。
硬盘--持久化存储数据的记忆设备,容量大,速度慢。
内存--临时存储数据的记忆设备,容量小,速度快。
IO设备--键盘、鼠标、显示器。
是一个免费、开源、跨平台、动态、面向对象的编程语言。
在命令行输入指令,回车即可得到结果。
将指令编写到.py文件,可以重复运行程序。
练习:
--目录:/home/tarena/1905/month01
--文件名:exercise01.py
2. 在文件中写入:print(“你好,世界!”)
3. 运行python程序
17:04
计算机只能识别机器码(1010),不能识别源代码(python)。
-- 优点:运行速度快
-- 缺点:开发效率低,不能跨平台。
-- 优点:开发效率高,可以跨平台;
-- 缺点:运行速度慢。
源代码 -- 编译 --> 字节码 -- 解释 --> 机器码
|————1次———|
给人看的,通常是对代码的描述信息。
表示一个功能,函数定义者是提供功能的人,函数调用者是使用功能的人。
例如:
不能使用关键字(蓝色),否则发生语法错误:SyntaxError: invalid syntax。
class_name
变量名1 = 变量名2 = 数据
变量名1, 变量名2, = 数据1, 数据2
del 变量名1, 变量名2
用于删除变量,同时解除与对象的关联.如果可能则释放对象。
每个对象记录被变量绑定(引用)的数量,当为0时被销毁。
如: -5, 100, 0
十进制:5
二进制:0b开头,后跟1或者1
八进制:0o开头,后跟0~7
十六进制:0x开头,后跟09,AF,a~f
小数:1.0 2.5
科学计数法:e/E (正负号) 指数
1.23e-2 (等同于0.0123)
1.23456e5(等同于123456.0)
是用来记录文本信息(文字信息)。
字面值:双引号
由实部和虚部组成的数字。
虚部是以j或J结尾。
字面值: 1j 1+1j 1-1j
用来表示真和假的类型
True 表示真(条件满足或成立),本质是1
False 表示假(条件不满足或不成立),本质是0
结果为False:bool(0) bool(0.0) bool(None)
1 + 2.14 返回的结果是 3.14
1 + 3.0 返回结果是: 4.0
+ 加法
- 减法
* 乘法
/ 除法:结果为浮点数
// 地板除:除的结果去掉小数部分
% 求余
** 幂运算
优先级从高到低: ()
**
* / % //
+ -
y += x 等同于 y = y + x
y -= x 等同于 y = y - x
y *= x 等同于 y = y * x
y /= x 等同于 y = y / x
y //= x 等同于 y = y // x
y %= x 等同于 y = y % x
y **= x 等同于 y = y ** x
< 小于
<= 小于等于
> 大于
>= 大于等于
== 等于
!= 不等于
返回布尔类型的值
比较运算的数学表示方式:0 <= x <= 100
表示并且的关系,一假俱假。
示例:
True and True # True
True and False # False
False and True # False
False and False # False
表示或者的关系,一真俱真
示例:
True or True # True
True or False # True
False or True # True
False or False # False
表示取反
例如:
not True # 返回False
not False # 返回True
一但结果确定,后面的语句将不再执行。
语法:
x is y
x is not y
作用:
is 用于判断两个对象是否是同一个对象,是时返回True,否则返回False。
is not 的作用与is相反
高到低:
算数运算符
比较运算符
快捷运算符
身份运算符
逻辑运算符
5. 如果逻辑行过长,可以使用隐式换行或显式换行。
隐式换行:所有括号的内容换行,称为隐式换行
括号包括: () [] {} 三种
显式换行:通过折行符 \ (反斜杠)换行,必须放在一行的末尾,目的是告诉解释器,下一行也是本行的语句。
通常用来填充语法空白。
让程序根据条件选择性的执行语句。
if 条件1:
语句块1
elif 条件2:
语句块2
else:
语句块3
elif 子句可以有0个或多个。
else 子句可以有0个或1个,且只能放在if语句的最后。
if 100:
print("真值")
等同于
if bool(100):
print("真值")
语法:变量 = 结果1 if 条件 else 结果2
作用:根据条件(True/False) 来决定返回结果1还是结果2。
可以让一段代码满足条件,重复执行。
while 条件:
满足条件执行的语句
else:
不满足条件执行的语句
else子句可以省略。
在循环体内用break终止循环时,else子句不执行。
用来遍历可迭代对象的数据元素。
可迭代对象是指能依次获取数据元素的对象,例如:容器类型。
for 变量列表 in 可迭代对象:
语句块1
else:
语句块2
else子句可以省略。
在循环体内用break终止循环时,else子句不执行。
用来创建一个生成一系列整数的可迭代对象(也叫整数序列生成器)。
range(开始点,结束点,间隔)
函数返回的可迭代对象可以用for取出其中的元素
返回的数字不包含结束点
开始点默认为0
间隔默认值为1
跳过本次,继续下次循环。
数据 in 序列
数据 not in 序列
如果在指定的序列中找到值,返回bool类型。
正向索引从0开始,第二个索引为1,最后一个为len(s)-1。
反向索引从-1开始,-1代表最后一个,-2代表倒数第二个,以此类推,第一个是-len(s)。
从容器中取出相应的元素重新组成一个容器。
容器[(开始索引):(结束索引)(:(步长))]
小括号()括起的部分代表可省略
结束索引不包含该位置元素
步长是切片每次获取完当前元素后移动的偏移量
由一系列字符组成的不可变序列容器,存储的是字符的编码值。
--ASCII编码:包含英文、数字等字符,每个字符1个字节。
--GBK编码:兼容ASCII编码,包含21003个中文;英文1个字节,汉字2个字节。
--Unicode字符集:国际统一编码,旧字符集每个字符2字节,新字符集4字节。
-- UTF-8编码:Unicode的存储与传输方式,英文1字节,中文3字节。
\’ \” \””” \n \\ \t \0 空字符
a = r”C:\newfile\test.py”
生成一定格式的字符串。
字符串%(变量)
"我的名字是%s,年龄是%s" % (name, age)
%s 字符串 %d整数 %f 浮点数
由一系列变量组成的可变序列容器。
列表名 = []
列表名 = list(可迭代对象)
列表名.append(元素)
列表.insert(索引,元素)
索引、切片
正向:
for 变量名 in 列表名:
变量名就是元素
反向:
for 索引名 in range(len(列表名)-1,-1,-1):
列表名[索引名]就是元素
列表名.remove(元素)
del 列表名[索引或切片]
浅拷贝:复制过程中,只复制一层变量,不会复制深层变量绑定的对象的复制过程。
深拷贝:复制整个依懒的变量。
将多个字符串拼接为一个。
result = "连接符".join(列表)
将一个字符串拆分为多个。
列表 = “a-b-c-d”.split(“分隔符”)
使用简易方法,将可迭代对象转换为列表。
变量 = [表达式 for 变量 in 可迭代对象]
变量 = [表达式 for 变量 in 可迭代对象 if 条件]
如果if真值表达式的布尔值为False,则可迭代对象生成的数据将被丢弃。
变量 = [表达式 for 变量1 in 可迭代对象1 for 变量2 in可迭代对象2]
result = []
for r in ["a", "b", "c"]:
for c in ["A", "B", "C"]:
result.append(r + c)
result = [r + c for r in list01 for c in list02]
元组名 = ()
元组名 = tuple()
元组名 = (20,)
元组名 = (1, 2, 3)
元组名 = 100,200,300
元组名 = tuple(可迭代对象)
索引、切片
正向:
for 变量名 in 列表名:
变量名就是元素
反向:
for 索引名 in range(len(列表名)-1,-1,-1):
元祖名[索引名]就是元素
变量交换的本质就是创建元组:x, y = y, x
格式化字符串的本质就是创建元祖:"姓名:%s, 年龄:%d" % ("tarena", 15)
字典名 = {键1:值1,键2:值2}
字典名 = dict (可迭代对象)
语法:
字典名[键] = 数据
说明:
键不存在,创建记录。
键存在,修改映射关系。
变量 = 字典名[键] # 没有键则错误
for 键名 in 字典名:
字典名[键名]
for 键名,值名 in 字典名.items():
语句
del 字典名[键]
使用简易方法,将可迭代对象转换为字典。
{键:值 for 变量 in 可迭代对象}
{键:值 for 变量 in 可迭代对象 if 条件}
集合名 = set()
集合名 = set(可迭代对象)
集合名 = {1, 2, 3}
集合名 = set(可迭代对象)
集合名.add(元素)
集合名.discard(元素)
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s3 = s1 & s2 # {2, 3}
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s3 = s1 | s2 # {1, 2, 3, 4}
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s1 - s2 # {1} 属于s1但不属于s2
补集^:返回不同的的元素
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s3 = s1 ^ s2 # {1, 4} 等同于(s1-s2 | s2-s1)
s1 = {1, 2, 3}
s2 = {2, 3}
s2 < s1 # True
s1 > s2 # True
s1 = {1, 2, 3}
s2 = {3, 2, 1}
s1 == s2 # True
s1 != s2 # False
子集或相同,超集或相同 <= >=
使用简易方法,将可迭代对象转换为集合。
{表达式 for 变量 in 可迭代对象}
{表达式 for 变量 in 可迭代对象 if 条件}
不可变的集合。
固定集合可以作为字典的键,还可以作为集合的值。
创建固定集合:frozenset(可迭代对象)
等同于set
File -> Settings -> Editor -> General -> Code Completion -> Autopopup in (ms):0
Ctrl + P 参数信息(在方法中调用参数)
Ctrl + Q 快速查看文档
Ctrl + Alt + M 提取方法
提高代码的可重用性和可维护性(代码层次结构更清晰)。
def 函数名(形式参数):
函数体
def 关键字:全称是define,意为”定义”。
函数名:对函数体中语句的描述,规则与变量名相同。
形式参数:方法定义者要求调用者提供的信息。
函数体:完成该功能的语句。
方法定义者告诉调用者的结果。
return 数据
return后没有语句,相当于返回 None。
函数体没有return,相当于返回None。
数值型(整数,浮点数,复数)
布尔值bool
None 空值
字符串str
元组tuple
固定集合frozenset
列表 list
字典 dict
集合 set
不可变类型的数据传参时,函数内部不会改变原数据的值。
可变类型的数据传参时,函数内部可以改变原数据。
定义:实参与形参的位置依次对应。
定义:实参用*将序列拆解后与形参的位置依次对应。
定义:实参根据形参的名字进行对应。
def 函数名(形参名1=默认实参1, 形参名2=默认实参2, ...):
函数体
缺省参数必须自右至左依次存在,如果一个参数有缺省参数,则其右侧的所有参数都必须有缺省参数。
缺省参数可以有0个或多个,甚至全部都有缺省参数。
语法:
def 函数名(形参名1, 形参名2, ...):
函数体
def 函数名(*元组形参名):
函数体
收集多余的位置传参。
一般命名为'args'
形参列表中最多只能有一个
def 函数名(*, 命名关键字形参1, 命名关键字形参2, ...):
函数体
def 函数名(*args, 命名关键字形参1, 命名关键字形参2, ...):
函数体
强制实参使用关键字传参
def 函数名(**字典形参名):
函数体
收集多余的关键字传参
一般命名为'kwargs'
形参列表中最多只能有一个
位置形参 --> 星号元组形参 --> 命名关键字形参 --> 双星号字典形参
在函数内部修改全局变量。
在函数内部定义全局变量(全局声明)。
global 变量1, 变量2, …
在函数内直接为全局变量赋值,视为创建新的局部变量。
不能先声明局部的变量,再用global声明为全局变量。
在内层函数修改外层嵌套函数内的变量
nonlocal 变量名1,变量名2, ...
在被嵌套的内函数中进行使用
本文作者:赵耀伟
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!