首页 > 其他学习 > python > Python简介和运算符
2016
12-16

Python简介和运算符

Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。它是纯粹的自由软件,源代码和解释器CPython遵循GPL(GNU General Public License)协议[1]。

Python语法简洁清晰,具有丰富和强大的库。被称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。

Python中认为一切都是对象,一个模块,一个函数甚至一个变量都是一个对象。

Python中的逻辑行和物理行

物理行是在编写程序时所看见的行,逻辑行是Python解释执行时的单个语句,Python默认每个物理行对应一个逻辑行。

一个物理行最后加上反斜杠"\"代表这个逻辑行没有完成,下一个物理行还是属于这上一个物理行的语句的逻辑行。

如果想在一个物理行中使用多个逻辑行,那么需要使用分号";"来特别的分隔各个逻辑行。

在Python中,建议每个物理行只写一个逻辑行,这样可以在编写代码时避免使用分号,一般在Python程序中不会使用分号。

缩进 :空格和制表符在Python中是很重要的,Python会根据不同的缩进层次来判断决定语句的分组,错误的缩进会导致程序出错,并且在编写程序中只是用一种缩进的方式(如统一使用制表符缩进,或者统一使用两个空格缩进)。

Python运算符:

+ :加   - :减   * :乘

*:用在数字中为乘运算,用在字符串,列表,元组,字典等数据类型中表示重复多少次,如list*5返回一个把list列表重复5次后的列表。

/ :除,计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数

// :整除(也称为地板除),不管是浮点数相除还是整数相除,结果都只取整数部分。

% :取模(余)  ** :求幂,如2**3标识2的3次方。

> :大于   < :小于   == :等于   >= :大于等于   <= :小于等于   != :不等于

not :逻辑非   and :逻辑与   or :逻辑或

成员测试(判断一个对象是否在一个序列):in  not in

同一性测试is   not is

三元运算符:n=x if x<y else y,这个语句表示如果x<y成立则n=x,否则n=y。

#:井号开头的行是python的注释语句

'''(三个单引号)或"""(三个双引号):多行注释

PS:python中的and和or

与其他语言的操作有点不同,python中的and和or操作并不返回布尔值,而是返回它们实际进行比较的值之一。

注:此处提一下,Python下只有0、''、[]、()、{}、None在布尔环境下为假,其他任何都为真。

在and运算时,自左至右演算各个表达式的布尔值,如果某个值为假,and会返回第一个假值(短路,后面的值不会计算);如果所有的值都为真,那么会返回最后一个值。

类似的,or的演算逻辑是如果表达式都为假,or返回最后一个假值;如果表达式中有真值,会返回第一个真值(短路,后面的值不会计算)。

>>> 'a' and 'b'
'b'
>>> 'a' and 'b' and '' and 'c'
''
>>> 'a' or 'b'
'a'
>>> '' or [] or {}
{}

其他编程语言一般都有一个三元运算符(bool ? a : b),有人就想到在Python下用"bool and a or b"这样的形式模仿三元运算符

>>> 1 and "first" or "second"
'first'
>>> 0 and "first" or "second"
'second'

但是,由于这种表达式单单只是进行布尔逻辑运算,并不是语言的特定构成,这是and-or技巧和真正的三元运算符语法非常重要的不同。如果a为假,那么这个表达式中即使bool运算为真,结果仍然是返回b的值,这显然不是我们预期的结果

>>> 1 and '' or 'second'

'second'

所以"bool and a or b"表达式当a在布尔环境中为假时,不会按照正常的三元运算符运算。所以我们需要确保a的值不会为假,最常用的方式是使a成为[a]、b成为[b],然后使用返回值列表的第一个元素,所以就是a或b中的某一个。

>>> a = ""

>>> b = "second"

>>> (1 and [a] or [b])[0] #[a]和[b]都不是非空列表,所以它们都为真

最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。