dsqzhaoyue 发表于 2015-4-25 00:07:40

Python基础(1)--Python编程习惯与特点

1.代码风格




[*]  在Python中,每行程序以换行符代表结束,如果一行程序太长的话,可以用“\”符号扩展到下一行。在python中以三引号(""")括起来的字符串,列表,元组和字典都能跨行使用。并且以小括号(...)、中括号[...]和大括号{...}包围的代码不用加“\”符也可扩展到多行。

[*]  在Python中是以缩进来区分程序功能块的,缩进的长度不受限制,但就一个功能块来讲,最好保持一致的缩进量。

[*]  如果一行中有多条语句,语句间要以分号(;)分隔。

[*]  以“#”号开头的内容为注释,python解释器会忽略该行内容。

[*]  在python中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。python中的标识符是区分大小写的。

[*]  以下划线开头的标识符是有特殊意义的。以单下划线开头(_foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用“from xxx import *”而导入;以双下划线开头的(__foo)代表类的私有成员;以双下划线开头和结尾的(__foo__)代表python里特殊方法专用的标识,如__init__()代表类的构造函数。

[*]  在交互模式下运行python时,一个下划线字符(_)是特殊标识符,它保留了表达式的最后一个计算结果。




>>> "hello"
'hello'
>>> _
'hello'
>>> 10+10
20
>>> _
20
  在python中,函数、类、模块定义的第一段代码如果是字符串的话,就把它叫作文件字串,可通过__doc__属性访问。如:



def test():
"this is a document string"
return 100+1000
>>>print test.__doc__
this is a document string




2.保留字

andelifglobalor          yield
assertelseifpass
breakexceptimportprint
classexecinraise
continuefinallyisreturn
defforlambdatry
delfromnotwhile
  使用下面的代码可以打印python的关键字:



>>> from keyword import kwlist
>>> print kwlist
  输出如下:
  ['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运算符和表达式





Python运算符列表





运算符描述



x+y,x-y
加、减,“+”号可重载为连接符


x*y,x**y,x/y,x%y
相乘、求平方、相除、求余,“*”号可重载为重复,“%”号可重载为格式化


=,==,,!=
比较运算符


+=,-=,*=,/=,%=,**=,=,&=,^=,|=
自变运算符


x|y
按位或


x^y
按位异或


x&y
按位与


~x
按位取反


xy
x向左或向右移y位


is, is not
等同测试


in, not in
是否为成员测试


or,and,not
逻辑运算符


x,x,x.y,x(...)
索引,分片,限定引用,函数调用


(...),[...],{...},'...'
元组,列表,字典,转化为字符串








  运算符优先顺序列表(从最高到最低)





运算符描述



'expr'
字符串转换


{key:expr,...}
字典



列表


(expr1,expr2,...)
元组


function(expr,...)
函数调用


x
切片


x
下标索引取值


x.attribute
属性引用


~x
按位取反


+x,-x
正,负


x**y



x*y,x/y,x%y
乘,除,取模


x+y,x-y
加,减


xy
移位


x&y
按位与


x^y
按位异或


x|y
按位或


xy
比较


x is y,x is not y
等同测试


x in y,x not in y
成员判断


not x
逻辑否


x and y
逻辑与


x or y
逻辑或


lambda arg,...:expr
Lambda匿名函数






  真值表



对象/常量值



""



"string"



0



>=1



>> a,b=10,20
>>> a and b   #a is true
20
>>> a,b=0,5   #a is false
>>> a and b
0
[*]  对于or,当计算a or b时,python会计算a,如果a为真,则整个表达式取a值,如果a为假,表达式将取b值。如:



>>> a,b=10,20
>>> a or b
10
>>> a,b=0,5
>>> a or b
5
[*]  对于not,not将反转表表达式的“实际值”,如果表达式为真,not为返回假,如为表达式为假,not为返回真。如:



>>> not 2
False
>>> not 0
True
>>> not "test"
False
>>> not ""
True







4.给变量赋值
  变量赋值:赋值并不是直接将一个值赋给一个变量,在Python中,对象是通过引用传递的。Python的赋值语句不会返回值,类似下面的语句是非法的:



>>> x=1
>>> y=(x=x+1)
SyntaxError: invalid syntax
  链式赋值没有问题:



>>> x=1
>>> y=x=x+1
>>> x,y
(2, 2)
  Python不支持类似x++或--x这样的前置/后置自增/自减运算
  可以多重复值:



>>> x=y=z=1
>>> x
1
>>> y
1
>>> z
1
  可以多元赋值:



>>> x,y,z=1,2,'a string'
>>> x
1
>>> y
2
>>> z
'a string'
  通常使用小括号括起来,增强代码的可读性:



>>> (x,y,z)=(1,2,'a string')
>>> x
1
>>> y
2
>>> z
'a string'
  使用Python的多元赋值方式可以实现无中间变量交换两变量的值:



>>> #swapping variables in Python
>>> x,y=1,2
>>> x
1
>>> y
2
>>> x,y=y,x
>>> x
2
>>> y
1
  
页: [1]
查看完整版本: Python基础(1)--Python编程习惯与特点