Chinaunix首页 | 论坛 | 博客
  • 博客访问: 19738245
  • 博文数量: 679
  • 博客积分: 10495
  • 博客等级: 上将
  • 技术积分: 9308
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-18 10:51
文章分类

全部博文(679)

文章存档

2012年(5)

2011年(38)

2010年(86)

2009年(145)

2008年(170)

2007年(165)

2006年(89)

分类: Python/Ruby

2009-10-23 18:44:29

 Python 语法之操作符和表达式

File information

2009-10-23

磁针石:xurongzhong#gmail.com

博客:oychw.cublog.cn

参考资料:

Python Essential Reference 4th Edition 2009

beginning python from novice to professional second edition 2008

 

 

*数值运算符

      

      

x + y 加法

x - y 减法

x * y 乘法

x / y 除法

x // y 整除

x ** y 乘方

x % y 取模

x Unary minus

+x Unary plus

 

       Python 2,两个整数相除结果为取模,Python 37/41Python 3中改为用浮点运算,得1.75Python 2导入:from __future__ import division,强制转换。Future一般用于调用以后版本会实现的功能。

 

>>> 2.75 % 0.5

0.25

 

>>> -3 ** 2

-9

>>> (-3) ** 2

9

 

长整数的处理:

>>> 1000000000000000000

1000000000000000000L

       2.2及以前版本处理的范围:2147483647 (or smaller than 2147483648

 

      

       16进制:

       >>> 0xAF

175

八进制:

>>> 010

8

变量必须赋值才能使用。

 

 

位操作符:

              x << y Left shift

              x >> y Right shift

              x & y Bitwise and

              x | y Bitwise or

              x ^ y Bitwise xor (exclusive or)

              ~x Bitwise negation

       python在位运算不会自动截断,要注意到是否会产生巨长的结果。

 

       其他运算符:

              abs(x) Absolute value

              divmod(x,y) Returns (x // y, x % y)

              pow(x,y [,modulo]) Returns (x ** y) % modulo

              round(x,[n]) Rounds to the nearest multiple of 10-n (floating-point numbers

              only)

       注意pow可以作为三元运算符,一般用于加密算法。

       round以远离0为目标:round(0.5)1round(-0.5)-1Python 3中有点怪异:round(0.5)round(0.5)0round(1.5)2 round(-1.5)-2

 

 

       算数比较符:

              x < y Less than

              x > y Greater than

              x == y Equal to

              x != y Not equal to

              x >= y Greater than or equal to

              x <= y Less than or equal to

 

       它们的连接,比如w < x < y < z,理解为w < x and x < y and y < z

       python中的隐式转换并不多。

 

*复合运算符

x +=y

x -=y

x *=y

x /=y

x //=y

x **=y

x %=y

x &=y

x |=y

x ^=y

x >>=y

x <<=y

 

              a = 3

              b = [1,2]

              c = "Hello %s %s"

              a += 1 # a = 4

              b[1] += 10 # b = [1, 12]

              c %= ("Monty", "Python") # c = "Hello Monty Python"

 

*点号

 

*函数调用()

def foo(x,y,z):

    return x+y+z

from functools import partial

f = partial(foo,1,2)

f(3)

 

       这个东东和currying进程很类似。

 

*函数调用()

def foo(x,y,z):

    return x+y+z

from functools import partial

f = partial(foo,1,2)

f(3)

 

       这个东东和currying进程很类似。

 

*类型转换

       int(x [,base]) Converts x to an integer. base specifies the base if x

is a string.

float(x) Converts x to a floating-point number.

complex(real [,imag]) Creates a complex number.

str(x) Converts object x to a string representation.

repr(x) Converts object x to an expression string.

format(x [,format_spec]) Converts object x to a formatted string.

eval(str) Evaluates a string and returns an object.

tuple(s) Converts s to a tuple.

list(s) Converts s to a list.

set(s) Converts s to a set.

dict(d) Creates a dictionary. d must be a sequence of

(key,value) tuples.

frozenset(s) Converts s to a frozen set.

chr(x) Converts an integer to a character.

unichr(x) Converts an integer to a Unicode character (Python 2

only).

ord(x) Converts a single character to its integer value.

hex(x) Converts an integer to a hexadecimal string.

bin(x) Converts an integer to a binary string.

oct(x) Converts an integer to an octal string.

 

a = int("34") # a = 34

b = long("0xfe76214", 16) # b = 266822164L (0xfe76214L)

b = float("3.1415926") # b = 3.1415926

c = eval("3, 5, 6") # c = (3,5,6)

      

*布尔类型操作符

 

x or y If x is false, return y; otherwise, return x.

x and y If x is false, return x; otherwise, return y.

not x If x is false, return 1; otherwise, return 0.

 

*对象相等

相等:(x == y)

是同一对象:is

 

*运算顺序

       除了乘方以外,都是由左至右的。

优先级由高到低:

(...), [...], {...} Tuple, list, and dictionary creation

s[i], s[i:j] Indexing and slicing

s.attr Attributes

f(...) Function calls

+x, -x, ~x Unary operators

x ** y Power (right associative)

x * y, x / y, x // y, x % y Multiplication, division, floor division, modulo

x + y, x - y Addition, subtraction

x << y, x >> y Bit-shifting

x & y Bitwise and

x ^ y Bitwise exclusive or

x | y Bitwise or

x < y, x <= y, Comparison, identity, and sequence membership

tests

x > y, x >= y,

x == y, x != y

x is y, x is not y

x in s, x not in s

not x Logical negation

x and y Logical and

x or y Logical or

lambda args: expr Anonymous function

 

*条件表达式

if a <= b:

minvalue = a

else:

minvalue = b

 

等同于:

minvalue = a if a <=b else b

 

values = [1, 100, 45, 23, 73, 37, 69 ]

clamped = [x if x < 50 else 50 for x in values]

print(clamped) # [1, 50, 45, 23, 50, 37, 50]

 

阅读(7788) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~