TOC

语言对比

编译型:一次性将所有的程序编译成二进制(计算机能识别的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

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注