目录
第一篇 python基础
一 变量
定义:
世间万物变化的量
变量三大组成:
①变量名
②赋值符号
③变量值
注意 变量命名规范:
①能反应变量值所描述的状态,不能用中文.
②必须用字母数字下划线组合,并且变量名第一个字符不能是数字和下划线
③不能用python关键字命名,可以采用缩写形式
python关键字:
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
变量命名风格:
下划线:
age_of nick = 19
注意:推荐使用下划线
驼峰体:
AgeofNick = 19
注意:面向对象编程,必须使用驼峰体
二 常量
定义:
变量是变化的量,常量则是不变的量.python中没有使用语法强制定义常量,常量本质上就是变量.如果非要定义常量,变量名必须全部大写.(AGE_OF_NICK = 19).
注意:常量是可以修改的,但是不建议修改
三 python变量内存管理
python垃圾回收机制:
变量引用计数为0,就会触发垃圾回收机制
小整数池:
python解释器在启动时创建出小整数池,范围[-5,256],该范围内的小整数对象是全局解释器范围内被重复使用的,永远不会被垃圾回收机制回收.(因为-5,256之间的整数比较常用,如果python解释器不停的回收和存入,比较耗费时间和内存占用,所以启动自带小整数池)
四 变量的三个特征
打印:
x = 10
print(x)#获取变量的变量值
10
判断变量值是否相等:
name1 = 'egon'
name2 = 'nick'
print(name1 == name2)
false(假)
判断变量id是否相等:
x = 11
y = x
z = 11
print(x == y) #true
print(x is y) #true
print(x is z) #true(整数池的原因)
x = 257
y = 257
print(x is y) #(false)
总结:
id相等的变量,值一定相等,指向的是同一个内存地址;值相等的变量,id不一定相等.
五 花式赋值
链式赋值:
a = b = c = d = 10; 或 a:10,b:10,c:10,d:10.
交叉赋值:
x, y = y, x; 或 temp = x,x = y, y = temp.
六 注释
代码注释分单行和多行注释,单行注释用#,多行注释可以用三对单/三对双引号,使用三引号注释可以换行.
# 单行注释
'''
三单注释
三单注释
'''
"""
三双注释
三双注释
"""
使用原则:
只需在重要或者不好理解的地方添加注释即可,可以用英文或者中文,不要用拼音.
七 数据类型
数据类型的定义:
数据类型指的就是变量值的不同类型
数据类型:
数字类型
字符串类型
列表类型
字典类型
布尔类型
八 数字类型
整型(int):
作用:
表示人的年龄,各种号码,级别
定义:
age = 18; age = int(18)
如何用:
加减乘除,逻辑判断(大于,小于)
浮点型(float):
作用:
表示身高,体重,薪资
定义:
salary = 2.1; salary = float(2.1)
如何用:
加减乘除,逻辑判断(大于,小于)
九 字符串
作用:
表示名字,爱好
定义:
字符串就是一串被串起来的字符,在单引号,双引号或者三引号内包裹的一串字符.需要注意的是:三引号内可以换行,而单引号内的字符不行.
如何用:
字符串只能+,*和逻辑比较;
如果字符串内有引号,则包裹字符串的引号和字符串内部引号不能相同;
字符串比较大小,按照ascll码比较,以后会细讲;
字符串的比较是字母的顺序
十 列表
作用:
存放多个值,如多个女朋友,多个爱好;
定义:
在[]内用逗号分隔开任意类型的值;
如何让用:
存不是目的,取才是目的;(索引取值,索引序号从0开始)
十一 字典
作用:
用来存多个值,按照key:value的方式存值,取得时候可以通过key而非索引去取值,key对xalue具有描述性的作用,存放数据的种类各种各样并且数据较多的时候可以使用字典
定义:
在{}内用逗号分开每一个元素,每一个都是key:value的格式,其中value是任意格式的数据类型,key由于具有描述性的作用,所以key通常是字符串类型;
如何用:
字典取值不再依赖于索引,而是依赖key,可以通过[key]即可获取key对应的value值.
十二 布尔值
作用:
用于判断条件结果
定义:
true,false通常情况不会直接引用,需要使用逻辑运算得到结果.
如何用:
print(bool('nick'))
注意:python中所有数据类型的值自带布尔值.如此多的数据类型中只需要记住只有0,none,空,false的布尔值为false,其余的为true.
十三 解压缩
解压缩可以这样理解:超市打包是把多个商品放在一起,解压缩其实就是解包把多个商品一次性拿出来.
有时候解压缩的值可能是我们不想要的,那么可以使用下划线,万能的下划线._
python与用户交互:
input()方法的作用只是暂停程序然后接收值.无论我们输入的值是数字类型,字符串类型,列表类型,input的接收值都是字符串类型.
注意点:输入年龄时需要强制转换数据类型.
十四 格式化输出的三种方式
占位符:
%S(针对所有数据类型);%D(仅仅针对数字类型)
使用方法:
age = 19
print('my age is %d' % age)
format格式化:
很鸡肋的用法:
name = 'nick'
age = 19
print("hello,{}.you are {}.".fromat(name,age))
# 打印结果hello, nick. you are 19.
f-String格式化:
相比较占位符的方式,python3.6版本新增了f-string格式化的方式,比较简单易懂,这是目前用的最多,最方便的方式,推荐使用.
name = 'nick'
age = 19
print(f"hello, {name}.you are {age}.")
# 打印结果:hello ,nick.you are 19.
# 再来个以后可能会用到的:
salsry = 6.6666
print(f'{sa;ary:.2f}')
# 打印结果6.67
十五 基本运算符
算术运算符:
a=10 b=20
+ 加 两个对象相加 a+b输出30
- 减 得到负数或是一个数减去另一个数 a-b输出-10
* 乘 两个数相乘或是返回一个被重复若干次的字符串 a*b输出200
/ 除 X除以Y b/a输出2
% 取模 返回除法的余数 b%a输出结果为0
** 幂 返回X的Y次幂 a**b为10的20次方,输出结果为10000000000000000000
// 取整除 返回商的整数部分 >>>9//2,输出4; >>>-9//2输出-5
比较运算符:
a=10; b=20
== 等于-比较对象是否相等 (a == b)返回false
!= 不等于-比较两个对象是否不相等 (a!=b)返回true
<> 不等于-比较两个对象是否不相等 (a<>b)返回true.这个运算符类似!=
> 大于-返回X是否大于Y (a>b)返回false
< 小于-返回X是否小于Y.所有比较运算符返回1表示真,返回0表示假.这分别与特殊的变量true和false等价 (a<b)返回true
>= 返回X是否大于等于Y (a>=b)返回false
<= 返回X是否小于等于Y (a<=b)返回true
赋值运算符:
a=10; b=20
= 简单的赋值运算符 c=a+b将a+b的运算结果赋值为c
+= 加法运算符 c +=a等效于c=c+a
-= 减法运算符 c -=a等效于c=c-a
*= 乘法运算符 c *=a等效于c=c*a
/= 除法运算符 c /=a等效于c=c/a
%= 取模运算符 c %=a等效于c=c%a
**= 幂赋值运算符 c **=a等效于c=c**a
//== 取整除运算符 c //=a等效于c=c//a
逻辑运算符:
a=10; b=20
and x and y 布尔"与"-如果X为false,x and y 返回false,否则它返回y的计算值. (a and b)返回20
or 布尔"或"-如果x是非0,它返回x的值,否则它返回y的计算值.(a or b)返回10
not 布尔"非"-如果x为true,返回false.如果x为false,它返回true. not(a and b)返回false
身份运算符:
is is是判断两个标识符是不是引用自一个对象 x is y,类似id(x)==id(y),如果引用的是同一个对象则返回true,否则返回false
is not is not 是判断两个标识符是不是引用自不同对象 x is not y,类似id(a)!=id(b).如果引用的不是同一个对象则返回结果true,否则返回false.
位运算符:
& 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 (a&b)输出结果为12,二进制解释: 0000 1100
| 按位或运算符:只要对应的二哥二进制位有一个为1时,结果为就为1. (a|b)输出结果为61,二进制解释:0011 1101.
^ 按位异或运算符:当两对应的二进位相异时,结果为1; (a^b)输出结果49,二进制解释:0011 0001.
~ 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1.~X类似于-X-1. (~a)输出结果-61,二进制解释:1100 0011,在一个有符号二进制的补码形式.
<< 左移动运算符:运算数的各二进位全部左移若干位,由<<右边的数字制定了移动的位数,高位丢弃,低位补0. a<<2输出结果240,二进制解释:1111 0000
>> 右移运算符:把">>"左边的运算数的各二进位全部右移若干位,>>右边的数字指定了移动的位数 a>>2输出结果15,二进制解释:0000 1111
成员运算符:
in 如果在指定的序列中找到值返回true,否则返回false. x在y序列中,如果x在y序列中返回true.
not in 如果在指定的序列中没有找到返回值true,否则返回false. x不在y序列中,如果x不在Y序列中返回true
python运算符优先级:
python运算符的优先级相当于数字中的先算乘除再算加减,但是这很愚蠢,优先级别高的你括号括起来就行了...
十六 流程控制之if判断
if:
if表示if成立代码会干嘛
if ....else:
if...else表示if成立代码会干什么,else不成立会干什么.
if...elif...else:
if ...elif...else表示if条件1成立干什么,elif条件2成立干什么,elif条件3成立干什么,else...否则干什么
十七 流程控制之while循环
语法:
循环就是一个重复的过程,while循环又称为条件循环.
while+break:
break的意思是终止掉当前层的循环,执行其他代码.
while+continue:
continue的意思是终止本次循环,直接进入下一次循环;
continue不能加载循环体的最后一步执行的代码,因为代码加上去毫无意义.ps:注意是最后一步执行的代码,而不是最后一行
while循环的嵌套:
就是while循环层里面再加一个while循环
while + else:
else会在while没有被break时才会执行else的代码
十八 流程控制之for循环:
语法:
为什么有了while循环,还需要for循环?for循环的循环次数受限于容器类型的长度,而while循环的次数需要自己控制.for循环也可以按照索引取值.(字典也有取多个值的需求,字典可能有while循环无法使用了,这个时候可以使用我们的for循环.)
for + break:
for循环跳出本层循环.
for + continue:
for循环跳出本次循环,进入下一次循环.
for循环嵌套:
外层循环 循环一次,内层循环循环所有的
for + else:
for循环没有break的时候触发else内部代码块.