1、基础及运算符
语言对比
Python
内存控制
编码
变量
变量赋值
多变量赋值
常量
注释
单行注释(行注释)
多行注释(块注释)
获取用户输入
BooL运算符
算数运算符
相同运算
成员运算符
比较运算符
逻辑运算符
赋值运算符
字符串常用判断方法
数字处理
Math模块
取整和截取整数
四舍六入
获取进制值
判断数据类型
Python
内存控制
编码
变量
变量赋值
多变量赋值
常量
注释
单行注释(行注释)
多行注释(块注释)
获取用户输入
BooL运算符
算数运算符
相同运算
成员运算符
比较运算符
逻辑运算符
赋值运算符
字符串常用判断方法
数字处理
Math模块
取整和截取整数
四舍六入
获取进制值
判断数据类型
语言对比
编译型:一次性将所有的程序编译成二进制(计算机能识别的0101指令代码)文件。c、c++;
缺点:开发效率低,不能跨平台,只适配编译时所使用的计算机;
优点:执行速度快,因为在运行之前,都会转换成二进制;
解释型:当程序执行时,一行一行解释成二进制,然后执行,如python;
优点:开发效率高,可以跨平台,由解释器决定动态编译为适用于当前指令集的二进制程序;
缺点:运行速度慢,因为程序是在执行时进行编译;
Python
Python是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言,Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。
1、Python是一种解释型语言:这意味着开发过程中没有了编译这个环节,类似于PHP和Perl语言;
2、Python是交互式语言:这意味着,您可以在一个Python提示符 >>> 后直接执行代码;
3、Python是面向对象语言:这意味着Python支持面向对象的风格或代码封装在对象的编程技术;
4、Python是初学者的语言:Python对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到WWW浏览器再到游戏;
内存控制
Python是一门动态语言,它是运行在Python虚拟机之上的,Python和JAVA很像,它所有的变量不需要用户手动显示清除,解释器会自动进行垃圾回收,C语言和C++内存的开辟和回收都需要用户自己来做,如果由于某种原因,开辟的空间不进行回收,这样就会造成内存的大量浪费,所以说,使用了多少,在程序结束之前,一定需要手动释放掉,内存由程序申请,也应该由程序自行释放;
而对于Python的内存控制有一种机制,这种机制叫做引用计数机制,Python可以将那些不使用的变量,称之为垃圾,然后就会使用垃圾回收器将其回收,这种技术的产生,主要是为了更加正确的使用内存,他能解决内存空间浪费的问题,还能解决内存碎片的问题,Python垃圾回收器会自动均衡内存分配空间;
所以垃圾回收器解决了两个问题,在Python中不需要关心变量的存亡,它的垃圾回收机制对每个变量会做一个计数器,使用一次加个1,不用的时候,回收器内部会有自己的逻辑减个1,当它变成0时,它就会慢慢被垃圾回收器给回收掉;
在Python中可以使用sys模块中的getrefcount方法来查看指定变量的引用计数值,变量的引用计数器的增加是有几种场景的,例如赋值语句,就会增加引用计数(x=3;y=x;z=[x:1]),当然,我们在使用变量作为参数的时候也会使引用计数器增加,如foo(x);
import sys
x = []
y = x
print(sys.getrefcount(x)) # 3 赋值语句两次,实参传入一次,最终结果也就是3次
变量的引用计数器的减少也有几种场景,如函数运行结束时,局部变量就会进行销毁,引用计数器也会减少,还有,变量被赋值语句给其他对象时,引用计数器也会相应减少,如 x=3 y=x;x=4,那么此时x计数器为1,因为重新赋值了,所以它会减少1个;
import sys
x = []
y = x
print(sys.getrefcount(x)) # 3
x = []
print(sys.getrefcount(x)) # 2
编码
Python默认编码是ASCII码,而一般windows的系统默认编码为utf-8,两者是不一致的,所以一般我们需要这python脚本前面新增 # -*- coding: utf-8 -*- 或者 # coding=utf-8 来解决,因为Python是解释型语言,一行一行读的,所以我们需要修改其默认编码为utf-8,否则解释器读出就会出现乱码的情况;
变量
变量就是将运算的结果暂存在内存中,然后用一个值(名称)指向该内存块的地址,以便后续代码调用,那么这个值(名称)就是我们所谓对变量,如 x = 3,这就叫做赋值,我们将3赋值给了变量 x ,换而言之就是将变量 x 将值或者对象关联起来;
同时,变量的命名也是有一定的规范的,避免与一些特殊的名称重合,同时也了规范,命名规则如下;
1、必须由数字字母下划线任意组合,且不能以数字开头;
2、不能是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...
3、变量名最好要具有可描述性,提升可读性;
变量赋值
Python中的变量赋值不需要类型声明,每个变量在内存中创建,都包括变量的标识,名称和数据这些信息,每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建,等号 = 用来给变量赋值,等号 = 运算符左边是一个变量名,等号 = 运算符右边是存储在变量中的值;
# 变量赋值
counter = 100 # 赋值整型变量
miles = 1000.0 # 浮点型
name = "John" # 字符串
print(counter,miles,name) # 100 1000.0 John
多变量赋值
Python允许你同时一次性为多个变量赋值,如下示例;
# 多个变量赋值
counter, miles, name = 100, 1000.0, "John"
print(counter, miles, name) # 100 1000.0 John
常量
常量就是那种约定俗成不变的变量,也不可轻易的取更改它,这样的变量,我们称之为常量,C语言中有专门的常量定义语法:const int a = 60,常量定义之后就不能更改,若更改就会报错,Python中没有类似const这样的修饰符,即没有专门用于定义常量的语法,所以这Python中常量一般全部以大写字母命名,这也是一种编码规范;
例如:CITY="WuHan"
注释
注释是对一段代码的解释和说明,可提高程序代码的可读性,让人们能够更加轻松地了解代码,尤其在大型项目开发和团队项目中,Python编程语言的单行注释常以#开头,单行注释可以作为单独的一行放在被注释代码行之上,也可以放在语句或者表达式之后;
单行注释(行注释)
Python中使用#表示单行注释。单行注释可以作为单独的一行放在被注释代码行之上,也可以放在语句或表达式之后;
# 这是单行注释
多行注释(块注释)
当注释内容过多,导致一行无法显示时,就可以使用多行注释。Python中使用三个单引号或三个双引号表示多行注释;
'''
这
是
多
行
注
释
'''
获取用户输入
一般来讲,编写程序时,我们无需知道程序的值就可以使用他们,但是,我们可以不知道,解释器是必须得知道变量的值的,可它怎么知道我们不知道的事情呢?因为你写的程序可能是供他人使用,所以我们也无法预测用户会向程序提供什么样的值,所以这个时候,我们的input()内置函数就很有用了;
input()函数,主要的功能就是向用户询问一个值,当用户输入这个值之后,我们程序就可以对这个值进行相应对处理;
>>> name=input("Please Input Your Name: ") # 让用户输入一个值,并将其赋值给name变量
Please Input Your Name: CaiChangEn
>>> print(name) # 打印变量对值
CaiChangEn
BooL运算符
布尔值,代表的就是真(True)或者假(False),在Python的Bool运算中, None、False、空字符串""、0、空列表[]、空字典{}、空元组()都相当于False,其他的都相当于True。
算数运算符
Python解释器可用作用功能强大的计算器,来计算各种复杂的算式,从而它有很多种类的表达式,如加法运算、减法运算、乘法运算、除法运算、取模运算、乘阶运算,其实这些算式都是面向对象运算符冲载的实现,具体的在面向对象阶会进行详细的阐述;
# 加法运算
print(1 + 2) # 3
# 减法运算
print(2 - 1) # 1
# 乘法运算
print(2 * 3) # 6
# 除法运算
print(4 / 2) # 2
# 整除并向下取整,只保留商的整数部分
print(4 // 2) # 2
# 取模运算,即取余,即返回除法的余数
print(5 % 2) # 1
# 乘阶运算,即求次方
print(2 ** 2) # 4
相同运算
相同运算和==有点类似,但是也不完全一样,相同运算主要是通过其内存地址等信息,判断两个对象是否属于同一个;
is:如 x is b,表示x和b是同一个对象;
is not:如 x is not b,表示x和b不是同一个对象;
成员运算符
Python还支持成员运算符,测试实例对象中是否包含了一系列或者指定的的成员,包括字符串,列表或元组等,都可以进行成员运算;
in:判断字符串是否在集合中;
not in:判断字符串是否不在集合中;
比较运算符
比较运算符,也称关系运算符,用于对常量、变量或表达式的结果进行大小比较。如果这种比较是成立的,则返回 True(真),反之则返回 False;
==:等于;
>:大于;
<:小于;
>=:大于等于;
<=:小于等于;
!=[或<>]:不等于;
逻辑运算符
比较运算符是指可以使用下列运算符比较两个值。当用运算符比较两个值时,结果是一个逻辑值,不是 TRUE(成立) 就是 FALSE(不成立)的运算符号;
and:两个条件都得为真;
or:两个条件有一个为真即可;
not:如果 x 为 True,返回 False 。如果 x 为 False,它返回 True;
补充:
user == 'cce' and (pwd == '123' or 1 == 1)
赋值运算符
赋值运算符用来把右侧的值传递给左侧的变量(或者常量);可以直接将右侧的值交给左侧的变量,也可以进行某些运算后再交给左侧的变量,比如加减乘除、函数调用、逻辑运算等;
== 简单的赋值运算符,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;
字符串常用判断方法
string.isalnum():如果string至少有一个字符并且所有字符都是字母或数字则返回True,否则返回False;
string.isalpha():如果string至少有一个字符并且所有字符都是字母则返回True,否则返回False;
string.isdecimal():如果string只包含十进制数字则返回True否则返回False;
string.isdigit():如果string只包含数字则返回True否则返回False;
string.islower():如果string中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回True,否则返回False;
string.isnumeric():如果string中只包含数字字符,则返回True,否则返回False;
string.isspace():如果string中只包含空格,则返回True,否则返回False;
string.istitle():如果string是标题化的则返回True,否则返回False;
string.isupper():如果string中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回True,否则返回False;
数字处理
数字处理有几个模块,可以对数字进行一些常用的数学运算;
round:主要用于来对数字进行四舍六入五取偶数;
math:数学运算主要模块,包含大量对数学计算公式;
int:取整,只要整数部分;
//:整除并向下取整;
pow:求次方相等于**;
bin:求一个数的二进制字符串形式表示法;
oct:求一个数的八进制字符串形式表示法;
hex:求一个数的十进制字符串形式表示法;
Math模块
import math
# 向上取整,返回大于等于参数的最小整数,即对浮点数向上取整
print(math.ceil(2.6)) # 3
print(math.ceil(-2.6)) # -2
# 向下取整,返回小于参数的最大整数,即对浮点数向下取整
print(math.floor(2.6)) # 2
print(math.floor(-2.6)) # -3
取整和截取整数
# 截取整数部分
print(int(0.5)) # 0
print(int(-1.5)) # -1
# 向下取整
print(3//2) # 1
print(-1//2) # 1
四舍六入
她并非四舍五入,在Python3.5之后的版本是四舍六入五取偶,取偶的意思是,离数字最近的偶数,比如2.5最近的偶数是2,3.5最近的偶数是4;
print(round(1.1)) # 1
print(round(1.500000)) # 2
print(round(2.500)) # 2
获取进制值
Python提供提供了一些方法,可以快速获取对应的进制值,示例如下;
# 将十进制转换为二进制
print(bin(10)) # 0b1010 即,1010
# 将十进制转换八进制
print(oct(10)) # 0o12 即,12
# 将十进制转化为十六进制
print(hex(10)) # 0xa 即,a
判断数据类型
Python为我们提供来一个isinstance函数,可以通过这个函数来测试,一个数据是否属于某种类型,或者某些类型,返回一个bool值;
print(type(0.1)) # <class 'float'>
print(isinstance(123,(int))) # True
print(isinstance("123",(tuple,list))) # False