转: Python 运算符与用法
3 + 5得到8。'a' + 'b'得到'ab'。
(注意:6+'a'这样是错误的,但在PHP里这样是可以运行的)
-减得到负数或是一个数减去另一个数
2 * 3得到6。'la' * 3得到'lalala'(但PHP里这样运算返值为0)。
在PHP中要实现相同功能,有函数:
str_repeat(),str_pad()
**幂
返回x的y次幂
3 ** 4得到81(即3 * 3 * 3 * 3)
8%3得到2。-25.5%2.25得到1.5
(在PHP中:-8%3 = -2 与 8%-3 = 2 )
<<左移
x = False; y = True; x and y,由于x是False,返回False。在这里,Python不会计算y,因为它知道这个表达式的值肯定是False(因为x是False)。这个现象称为短路计算。
or布尔“或”
x = True; y = False; x or y返回True。短路计算在这里也适用。
fc_lamp提醒你:1 Python的逻辑运算符里没有“!(非),&&(与),||(或)” 这三个表示符号(完全是英文上的表示)。
即 not,and,or
2 Python中的变量赋值操作不是一种存储操作。比如:a=5,这里仅是将创建并包含值5的新对象,用名称a来引用了而已。
再看关于Bool值
#coding:utf-8
#True、任意非零数字、非空字符串、列表、元组或者字典都返回True
#False、零、None、和空的列表、元组和字典都返回False
#另外 is 运算符用于比较两个对象身份,type()函数则返回一个对象的类型,如list,dict,file,int
#1和0的问题:我们知道python的数字类型有:bool,int,long,float,complex(复数)
#而bool中的true和false就是分别映射了1和0,所以作值判断时:xx=1 if xx==True 是成立的。
s = 'asdfs'
if s:
print(s)
else:
print('not true')
#输出 asdfs s = {}
if s:
print(s)
else:
print('not true')
#输出not true s = 0
if s==False:
print(s)
else:
print('not true')
#输出0 s =1
if s==True:
print(s)
else:
print('not true')
#输出 1 if type(s) is bool: #严格意义上 数字类型中的bool型
print(s)
else:
print('not true')
#输出not true
以上可看出
1 在python中空的列表 ([]),tuple(()),字典({}),字符串(''),零(0),还有None对象,在逻辑判断中都为假,其他的情况都为真。()
对比PHP
<?php
class test
{
}
$a = new test();
if($a){
echo 'new test() bool true<br/>';
}
$a = array();
if($a){
echo 'array() bool true<br/>';
}
$a = null;
if($a){
echo 'null bool true<br/>';
}
$a=false;
if($a){
echo 'false bool true<br/>';
}
$a=0;
if($a){
echo '0 bool true<br/>';
}
$a='';
if($a)
{
echo "'' bool true<br/>";
}
$a='0';
if($a){
echo "'0' bool true<br/>";
}
$a=0.0;
if($a){
echo "0.0 bool true<br/>";
} $a='0.0';
if($a){
echo "'0.0' bool true<br/>";
}
结果:
new test() bool true
'0.0' bool true
从上可看出在PHP中:
布尔值 FALSE 本身、
整型值 0(零)、
浮点型值 0.0(零)、
空字符串,以及字符串 "0"、
不包括任何元素的数组、
不包括任何成员变量的对象(仅 PHP 4.0 适用,从例子中可看出空对象不再是FALSE)、
特殊类型 NULL(包括尚未赋值的变量)、
从没有任何标记(tags)的 XML 文档生成的 SimpleXML 对象
值都是 FALSE
2 is 运算符是比较对象地址,也就是说是否是同一对象。
3 == 运算符比较两对象是否相等,但它们不一定引用的是同一对象。
另外单独说说python的字符串运算符:
了解PHP的人知道,在PHP里字符串的连接运算符为(“.”),它返回其左右参数连接后的字符串。如:
<?php $a = 55; $str = 'abc'; $str .= 'def'; $str .= $a; //在运算时,PHP自动把$a的类型转为了字符串类型 $str = $str.'s99s'; //在PHP里变量与字符串之间连接是通过点运算来实现连接的 echo $str; 但在python里,可能大家已从运算表里找到了,即 (“+”),但是与PHP不同的是两个对象相加,两个对象必须是同类型的,不同类型的两个对象是不能相加的。
要实现像上面PHP代码里的运算,必须保证两对象类型一致。如:
print('=============python字符串运算符================') numa = 3 strs = 'This first' strs1 = strs,numa #输出值为:('This first',3) print(strs1) ###################### #类型对象不匹配,无法正常运算 #strs2 = strs+numa #print(strs2) ###################### strs3 = strs+str(numa) #改变numa的类型,使其成为字符串,或者 strs += str(numa) print(strs3) #输出为This first3 #另外:如果strs = '6',则可进行:strs3 = int(strs)+numa这样的运算,输出为9
>>> l =[2,4,6,8]
>>> newl =[i+1for i in l]
>>> newl
[3,5,7,9]
#在字典(dict)里使用'列表解析'
>>> d = {'a':1,'b':3,'f':6}
>>> newd = dict([(k,v+2)for k,v in d.iteritems()])#先转成元组,再dict成字典
>>> newd
{'a':3,'b':5,'f':8}
#d.items()与d.iteritems()
>>>for i in d.items():
print i
('a',1)
('b',3)
('f',6)
>>>for k,v in d.iteritems():
print k,v
a 1
b 3
f 6
python里的"三元"运算符
python里没有类似"xx ? xx : xx"这样的三元运算符,可用:
charset = 'utf8' if 'charset' not in param else param['charset'];
这种方式来代替。
参看:http://chroya.iteye.com/blog/726479
Python的常见的类型转换
函数 描述
int(x [,base ]) #将x转换为一个整数
long(x [,base ]) #将x转换为一个长整数
float(x ) #将x转换到一个浮点数
complex(real [,imag ]) #创建一个复数
str(x ) #将对象 x 转换为字符串
repr(x ) #将对象 x 转换为表达式字符串
eval(str ) #用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s ) #将序列 s 转换为一个元组
list(s ) #将序列 s 转换为一个列表
chr(x ) #将一个整数转换为一个字符
unichr(x ) #将一个整数转换为Unicode字符
ord(x ) #将一个字符转换为它的整数值
hex(x ) #将一个整数转换为一个十六进制字符串
oct(x ) #将一个整数转换为一个八进制字符串
编码问题
需要注意的是,中文在python里的存储方式是以编码后的形态存放的,
所以要正常呈现中文应格式化形式输出,如:
print('错误',) 输出:'\xb4\xed\xce\xf3'
与
print('错误') 输出:错误
多一个“,”号行为就不一样了。
上面一个是元组输出,而后面一个是以字符串形式输出。
更多编码问题参看: 1 《 python 中文编码问题》 2 《Python MySQL 数据库乱码解决方法》
另注:
1 dir()函数 :
你可以使用内建的dir函数来列出模块定义的标识符。标识符有函数、类和变量。
当你为dir()提供一个模块名的时候,它返回模块定义的名称列表。如果不提供参数,它返回当前模块中定义的名称列表。
2 del
用于删除一个变量,这类似于PHP里的unset()
3 python的Bool值:True ,False
isinstance('test',str) 类型检测函数
转: Python 运算符与用法的更多相关文章
- 21.Python算术运算符及用法详解
算术运算符是处理四则运算的符号,在数字的处理中应用得最多.Python 支持所有的基本算术运算符,如表 1 所示. 表 1 Python常用算术运算符 运算符 说明 实例 结果 + 加 12.45 + ...
- 浅谈Python在信息学竞赛中的运用及Python的基本用法
浅谈Python在信息学竞赛中的运用及Python的基本用法 前言 众所周知,Python是一种非常实用的语言.但是由于其运算时的低效和解释型编译,在信息学竞赛中并不用于完成算法程序.但正如LRJ在& ...
- python运算符重载
python运算符重载就是在解释器使用对象内置操作前,拦截该操作,使用自己写的重载方法. 重载方法:__init__为构造函数,__sub__为减法表达式 class Number: def __in ...
- Python回调函数用法实例详解
本文实例讲述了Python回调函数用法.分享给大家供大家参考.具体分析如下: 一.百度百科上对回调函数的解释: 回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函 ...
- Python运算符,python入门到精通[五]
运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.例如:2+3,其操作数是2和3,而运算符则是“+”.在计算器语言中运算符大致可以分为5种类型:算术运算符.连接运算符.关系运算符.赋值运 ...
- JS逗号运算符的用法详解
逗号运算符的用法详解 注意: 一.由于目前正在功读JavaScript技术,所以这里拿JavaScript为例.你可以自己在PHP中试试. 二.JavaScript语法比较复杂,因此拿JavaScri ...
- Python运算符与表达式
Python运算符包括赋值运算符.算术运算符.关系运算符.逻辑运算符.位运算符.成员运算符和身份运算符. 表达式是将不同类型的数据(常亮.变量.函数)用运算符按照一定得规则连接起来的式子. 算术运算符 ...
- day01-day04总结- Python 数据类型及其用法
Python 数据类型及其用法: 本文总结一下Python中用到的各种数据类型,以及如何使用可以使得我们的代码变得简洁. 基本结构 我们首先要看的是几乎任何语言都具有的数据类型,包括字符串.整型.浮点 ...
- 【Python】关于Python有意思的用法
开一篇文章,记录关于Python有意思的用法,不断更新 1.Python树的遍历 def sum(t): tmp=0 for k in t: if not isinstance(k,list): tm ...
随机推荐
- Java并发编程:CopyOnWrite容器的实现
Java并发编程:并发容器之CopyOnWriteArrayList(转载) 原文链接: http://ifeve.com/java-copy-on-write/ Copy-On-Write简称COW ...
- Column count of mysql.proc is wrong. Expected 20, found 16. Created with MySQL 50096, now running 50173.
IDEA链接mysql提示 Column count of mysql.proc is wrong. Expected 20, found 16. Created with MySQL 50096, ...
- 报错:Failed to create BuildConfig class
1. Project | Clean| Build Automatically 2. 在目录中找到gen目录,手动删除(一般是没有写权限导致Failed),再执行第一步方案.
- atol字符串转换函数应用实例
原型:long atol(const char *nptr); 相关函数 atoi,atol,strtod,strtol,strtoul 头文件:stdlib.h 功能:将字符串转换成整型数 说明:参 ...
- js中widow.open()方法详解
一. window.open() 支持环境: JavaScript1.0+/JScript1.0+/Nav2+/IE3+/Opera3+ 二.基本语法: window.open(pageURL,nam ...
- Project Euler:Problem 47 Distinct primes factors
The first two consecutive numbers to have two distinct prime factors are: 14 = 2 × 7 15 = 3 × 5 The ...
- web页面打印
在使用的两种方式打印: 第一种:js如下 function doPrint() { allhtml = window.document.body.innerHTML; starstr = " ...
- (转)SVN详解
原文地址:http://www.weixingon.com/s/visualsvn+%E4%B8%AD%E6%96%87 1.几种代理管理工具的适用场景 A.如果你的项目是5-6人的小团队,那么使用V ...
- (转)xml节点和元素的关系 .
XML节点是什么呢?当我们在处理XML文件的时候必须要明白XML节点的概念,那么从这里的讲述,你将会了解XML节点对于XML文件的意义,希望对你有所帮助. 在我们学习LINQ删除XML节点之前我们先来 ...
- MySQL数据库my.cnf配置文件注释详解
我们知道,在MySQL数据库安装完成后,要对my.cnf配置文件进行适当的修改才能充分利用MySQL数据库的功能.但是对于初学者来说,修改my.cnf配置文件似乎是一个比较难的过程.为了解决这个问题, ...