目录python
全部语言都有它本身规定的格式,Python也不例外,下面从几个方面来了解。程序员
在Python中主要的使用的注释方式是#号,固然在某些状况下三对单引号也是能够的,好比在函数中能够做为函数的说明。express
num =int(input('>>>: ')) # 输入一个数字 if num >= 1000: # 条件判断 if num >= 10000: # 大于10000 print('5') # 打印5位 else: '''不然''' print('4') '''打印4''' else: if num >= 100: print('3') elif num >= 10: print('2') else: print('1')
C语言使用的是花括号来表示层级关系,可是看起来不简洁,挺难看
,而Python使用的是缩进的方式表示层级关系,而且约定4个空格
为一个层级。编程
当咱们一行的代码超过了一屏显示的长度之后,多数状况下为了直观,咱们会另起一行,接着些,在Python中在行尾使用 \
标识续行,但若是在表达式或者某一段代码中使用了括号,那么Python认为括号内是一个总体,内部跨行不须要使用\
。bash
不少时候,咱们写代码的过程当中会对咱们须要的数据进行存储并命名,方便后续使用,这个命名被称为标识符,针对标识符Python进行了以下要求:函数
在咱们写代码的过程当中最好遵循下列约定:性能
python中内置了不少特殊的符号,好比换行、制表符什么的,部分含义以下:测试
\\
:单个\
表示转义,\\
就指代 \
这个符号。表示把\后面的字符进行转义,不用特殊方式进行转换。\t
:制表符,通常用来进行输出格式调整,好比对齐等\r
:回车符\n
: 换行符 在Python中数字主要分为三种类型:整型
,浮点数
,复数
。ui
整型
:在Python3中,不区分long和int,全部整型均为int类型,固然还包括了不一样进制,好比2进制,8进制,16进制等,都为int类型。须要注意的是Python中的bool型
属于整型的子类,因此bool的两个值,用整型能够表示为,0:False,非0:True
。浮点数
:即带小数点的float型复数
:用于科学计算,好比1+2j等 在Python中,使用'
(单引号),"
(双引号)括起来表示引用字符的序列,使用'''
,"""
,则能够跨行,而且自由的使用单双引号。除此以外还能够在字符串前加必定的符号来确切的表示字符串。code
str1 = r'hello\nworld' # 因为使用了r前缀,因此并不会把\n解释为换行 str2 = f'nihao {str1}' # 相似于 'nihao{}'.format(str1) print(str1) # hello\nworld print(str2) # nihao hello\nworld
在Python中还有一些地方和其余语言有很大区别,好比:
常量
:自己指代一旦赋值就不能被改变的标识符,可是Python中是没有这个概念的,换句话说就是,Python中,只要你看的到的东西,是均可以进行修改的。注意:在Python中是不须要提早申明变量的类型的,因此变量的赋值即定义
total = 2500 # 定义了一个total变量,它的值是2500。 赋值即定义
在Python中,运算符是比较重要的知识了,由于不少地方都须要知道多个数据的大小关系、逻辑关系,固然赋值也是须要用到运算符的,根据类型的不一样,主要分为赋值运算符
、算数运算符
、关系运算符
、逻辑运算符
以及位运算符
。
咱们平常使用的=号
就属于赋值运算符的一种,在Python还有以下算数运算符:
=
:赋值,例如:x=3,y='abc'+=
:自加,例如:x+=2,则表示x=x+2-=
:自减,例如:x-=2,表示x=x-2*=
:自乘,例如:x=2,表示x=x2/=
:自除,例如:x/=2,表示x=x/2%=
:自取余,例如:x%=2,表示x=x%2。 x对2取余数,假如x=6,那么取余为0当把数字赋值给一个变量的时候不用加引号,而赋值字符串给变量的时候就须要加引号了,不然python认为你赋值的是另外一个变量。
数学计算中的+,-,* 等都属于算数运算符的一种,其余的运算符以下:
+
:加,用来计算数字,若是字符串、列表等相加,等因而把两个对象拼到一块儿-
:减,同数学减*
:乘,同数学乘/
:除,4/3,默认是整除,为了获得小数,能够把其中一个变量变成浮点型,4.0/3或4/3.0//
:表示只取整数,4.0/3 答案是1.33333,若是用4.0//,由于取整则,答案是1%
:表示取余数,10%2余0,10%3余1**
:表示乘方 2**3 表示2的3次方关系运算符顾名思义就是判断关系的,好比大于,小于啊,等等,须要注意的是返回值为布尔值:即True或者False。更多的符号有:
>
:大于,例如1>2,值是False<
:小于,例如1<2,值是True>=
:大于等于,例如1>=2,值是False<=
: 小于等于,例如1<=2,值是True==
:是否等于,例如1==2,值是False!=
:不等于,例如 1!=2,值是True 逻辑运算符主要包含了三个:and
,or
,not
and
:逻辑与,只要有1个是false那么值就是False,1==2 and 1<2 ,值是False,1!=2 and 1<2,值是Frueor
:逻辑或,只要有一个是true那么值就是true,1=2 and 1<2 ,值是truenot
:逻辑非,取反 not 1<2,值是true逻辑运算符又被称为短路运算符:
故名思议,位运算符主要是针对位进行的计算的,它比加减运算略快,一般也比乘除法运算要快不少。说到位就不得不提补码了,由于计算机存储负数时使用的都是补码。
计算机当初由于成本、复杂等各类缘由,在进行加减法计算的时候,会把减法变为加法进行计算,如何理解呢?例如5-1,在计算机中进行计算的时候实际上用的是5+(-1),而负数在内存中并不会直接写个-0b1,负数在计算机中使用的是补码进行存储和运算的,计算机中有关数字的都有什么玛?什么是补码?
须要注意的是:负数在计算机中使用补码进行存储,好比-1
在计算机存储的是1111 1111
,负数补码的补码就表示负数自己。正数的原码反码补码都是相同的,计算机存储内存中的数字都为二进制位,当咱们想要查看具体表明的值时,计算机会转换为人类可读的原码进行显示,即:若是最高的符号位是0,那么认为它是正数,不进行去补,而最高的符号位若是是1,那么它会认为它是负数,会按照负数的取补的规则进行计算后展现。
例题:计算机,计算 5 - 1 的过程
# 计算机中计算的是 5 + -1 # 推导方法: 0000 0101 # 5的原码 1111 1110 # -1的补码 1111 1111 # -1的反码 10000 0100 # 溢出位舍去 0000 0100 # 5-1 的结果为 4
例题:计算~12
# ~12 表示取反 # 先将初始数转换为二进制,取反,的道德是补码,再对补码去补码才是取反的结果 0000 1100 # 12的原码 1111 0011 # 取反,获得补码 1000 1100 # 再次取反,获得反码 1000 1101 # +1 获得原码 转换为10进制就是-13了
针对位的运算符主要有:& | ~ ^ << >>.
&
:按位与,即按位相乘(1101 & 0001 , 与出来是0001)|
:按位或,即按位相加,不进位(1101 | 0001,或出来是1101) 0乘任何数是0,1+任何数是1^
:按位异或~
:取反<<
:左移(位)>>
:右移(位),例如32 >> 3 等于32//8 , 结果是4位运算符,平常使用的很少,可是若是你想作一个高级程序员,那么位运算是你必备的技能哦
运算符 | 描述 |
---|---|
** | 指数 (最高优先级) |
~ + - | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
* / % // | |
+ - | 加法减法 |
>> << | 右移,左移运算符 |
& | 位 'AND' |
^ | | 位运算符 |
<= < > >= | 比较运算符 |
<> == != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not and or | 逻辑运算符 |
小结:
算数运算符
> 位运算符
> 身份运算符
> 成员运算符
> 逻辑运算符
注意:在Python中,赋值即定义,若是一个变量已经定义,赋值至关于从新定义
计算机的内存大可能是线性编址的(1001,1002,1003门牌号,挨着排列的),如今有一个变量var1须要1001~1007空间,var2须要1008~1012空间,以下图
过了一段时间之后,var1中的1002,和1005不用了,var2的1010也不用了,内存就变成了以下的状况:
这时又来了一个 var3 须要申请 3个空间,在当前状况下就没办法进行分配了
这种状况就是咱们常说的内存空洞了,也叫内存碎片化,若是没办法进行碎片整理,那么这些分散的内存空间将没有办法被从新使用
Python在对内存进行管理时会像Java那样对内存进行分类,Java中将内存分为了老生代,新生代,持久化代,而Python中则分红了0,1,2三代,其中0代能够理解为临时存储,1代为短时间存储,2代为长期存储,当应用申请内存时,会根据内存状况先分配0带给程序使用,而后按期检查各个区的使用状况,若是某个程序在0区待的够久,那么在 Python 启动GC的时候,就会把它从0区移动到1区,同理在1区时间够久的,移动到2区。固然在启动GC的时候还会检查引用计数为0的对象,而后清理掉。
须要注意的是,Python启动GC的同时,不能进行其它的任务。频繁的垃圾回收将大大下降Python的工做效率。若是内存中的对象很少,就没有必要总启动垃圾回收。因此,Python只会在特定条件下,自动启动垃圾回收。当Python运行时,会记录其中分配对象(object allocation)和取消分配对象(object deallocation)的次数。当二者的差值高于某个阈值时,垃圾回收才会启动。
因此:
# 查看引用计数 # 因为1,2,15等这种常数,同时被Python语言解释器自己等引用,因此直接打印计数器它的引用计数并不会是1。 >>> import sys >>> x = [] >>> print(sys.getrefcount(x)) # 函数在执行时会进行参数传递操做,会使引用计数+1 2 >>> print(sys.getrefcount([])) 1 >>>
Python的程序控制主要分为顺序,分支,循环,这也和大多数语言是相同的。
顺序结构
:按照前后顺序一条一条执行,好比:先起床,再刷牙,再吃饭分支结构
:根据不一样的状况判断,条件知足后执行相应的操做,好比你去买个西红柿,若是看见西瓜,就买两个(真正的程序员会买回来两个西红柿的,别问我为何,哈哈)循环结构
:条件知足就反复执行,不知足就不执行或者再也不执行(循环完毕)计算机之因此能作不少自动化的任务,由于它能够本身作条件判断。在Python中主要经过if以及else的搭配来完成条件判断的工做。条件判断主要有三种基本用法。
顾名思义即若是怎么样,就怎么样。(if)
if expression: statement(s) 注意:python使用缩进做为其语句分组的方法,请使用4个空格 expression 表示条件表达式(好比:a>b) statement 表示要执行的代码
表达式:是将不一样的数据(包括变量、函数)用运算符号按必定规则链接起来的一种式子。
多分支有分为两种状况:
if expression: statement(s) else: statement(s) # else、elif,if都属于同级 if expression: statement(s) elif expression: statement(s) else: statement(s) 注意:python使用缩进做为其语句分组的方法,请使用4个空格 expression 表示条件表达式,必须是一个bool类型,由于这里会隐式的使用bool(expression)进行转换 statement 表示要执行的代码
分支嵌套,就是将多个两个或多个if判断进行层级嵌套,完成更精确的判断。
if expression: statement(s) # 非必须,看状况 if expression: statement(s) else: # 非必须,看状况 statement(s) # 非必须,看状况 else: statement(s)
True
:表示非空的量(好比:string、tuple、list、set、dictionary),全部非零数。 False
:表示0,None,空的量(空字符串,空字典,空列表,空便可,空元祖)等。这些对象又能够成为False等价
为了让计算机能反复执行某一操做,咱们须要循环语句来完成。Python中的循环主要有两种:for循环和while循环。
基本全部语言都有for关键字,它的曝光率远远超过其它关键字,但每一个语言有它本身的格式,在Python中它的格式为
for element in iteratable: statemen(s) # element 在循环时表示元素的变量(自行指定) # iteratable:这里表示一个可迭代对象,好比字符串,列表 # statemen(s) 表示要执行的代码段
在不少状况下,咱们须要循环必定次数,咱们通常使用range函数来构建可迭代对象。
# range 用法说明: range(stop) -> range object range(start, stop[, step]) -> range object # stop:表示中止位,默认从0开始 # start:起始位置 # step:步长(间隔) # range(1,10,2) --> 1,3,4,5,7,9
range是一个函数,接受1个或三个变量用于生成可迭代对象,能够理解它是一个生成器,若是不对range进行迭代,那么它就是一个生成器对象,不会直接计算数据,只有迭代,或者使用list函数才能够获取其生成的值,通常称这种方式为惰性求值。在Python2.x中是会直接生成列表的
else语句是for循环正常结束后要执行的语句,若是for循环被终止(好比知足某条件跳出循环,break等),那么就不会执行else后面的语句,它的格式为:
for iterating_var in sequence: statemen(s) else: statemen(s)
例子:
for i in range(0,10,2): if not i % 2 == 0: print('发现奇数') break else: # 当循环执行完毕,没有发现奇数,就会执行else语句 print('没有奇数')
for 循环主要去对列表、字符串、文件的行数等有次数的循环上,while 通常在无限循环,或者在某些有条件的控制上,直到表达式变为假(或者有一个break),才退会出while循环,表达式是一个逻辑表达式,必须返回一个True或False。
# 语法格式 while expression: statement(s) #注意:避免写成死循环
练习:判断输入的时候是空字符,是的话,就退出循环
while True: user_info = input('>>>: ') if not user_info: break print('Good,None to Quit')
while循环和for循环同样都含有else语句,当while循环正常执行完毕,就会被触发执行。
flag = 1 while flag < 10: if not flag % 2: print('发现偶数') break # 若是发现偶数会直接跳出循环,不会执行else语句 flag += 2 else: # 若是没有发现偶数,循环正常执行完毕,会执行else语句 print('没有发现偶数')
Python中的循环控制主要有三种方式,即:continue
、break
、pass
。
continue
:继续,当知足条件后,跳过本次循环。 break
:退出,当知足某一个条件后,终止循环。 pass
:占位符,仅仅起到占位的左右,没有其余效果。须要注意的是:
练习:给定一个不超过5位数的正整数,判断该数的位数,一次打印出万位,千位,百位,十位,个位的数字
num = 54321 weight = 10000 for i in range(5): c = num // weight print(c) num = num % weight weight //= 10