[TOC]

Python2.x 中使用 Python3.x 的 print 函数

>>> list =["a", "b", "c"]
>>> print list    # python2.x 的 print 语句
['a', 'b', 'c']
>>> from __future__ import print_function  # 导入 __future__ 包
>>> print list     # Python2.x 的 print 语句被禁用,使用报错
  File "<stdin>", line 1
    print list
             ^
SyntaxError: invalid syntax
>>> print (list)   # 使用 Python3.x 的 print 函数
['a', 'b', 'c']
>>>

数字

  • 整数

    • 十进制整数
    • 十六进制整数,0x开头,小写字母
    • 八进制整数,0o开头
    • 二进制整数,0b开头
  • 浮点数

  • 复数

    • 与数学中的复数形式完全一致,由实部和虚部构成,使用j或者J来表示虚部

      • var.real 查看复数实部
      • var.imag 查看复数虚部
      • var.conjugate() 返回共轭复数
      >>> a=3+4j
      >>> b=5+6j
      >>> c=a+b
      >>> c
      (8+10j)
      >>> c.real
      8.0
      >>> c.imag
      10.0
      >>> a.conjugate()
      (3-4j)
      >>> a*b
      (-9+38j)
      >>> a/b
      (0.6393442622950819+0.03278688524590165j)

字符串

python中,字符串属于不可变序列,一般使用单引号,双引号,三引号进行界定,且可以互相嵌套,用来表示复杂字符串,空字符串表示为‘’或‘’‘’或‘’‘’‘’

>>> a=' '''这里是单引号中的三单引号''' '
  File "<stdin>", line 1
    a=' '''这里是单引号中的三单引号''' '
           ^
SyntaxError: invalid syntax
>>> a=''' '这里是三单引号中的单引号' '''
>>> print(a)
 '这里是三单引号中的单引号'

​ 特别的,一对三单引号或三双引号表示的字符串支持换行

  • 字符串支持使用+运算符进行合并生成新字符串
  • 字符串支持格式化字符%a , %d , %c 等
  • 字符串支持转义字符
  • 字符串界定符前加字母r或R,表示原始字符串,其中的特殊字符不进行转义

运算符

过多,详见https://www.runoob.com/python/python-operators.html

一些内置函数

print() 打印内容

id() 获取变量所在的内存地址

type() 返回变量类型

isinstance() 测试对象是否为指定类型的实例

imp/importlib.reload() 重新导入模块

删除对象

python中,使用del命令来删除对象并解除值与值之间的指向关系。若删除对象后,仍有变量指向该值,则不在内存中删除该值,否则删除

>>> a=1
>>> a
1
>>> del a
>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

※ python采用的是基于值的内存管理方式

​ 相同值的不同变量指向同一内存地址;同一个变量赋予不同的值,变量的内存地址也会相应变化

​ 当为一个变量赋予一个新的值时,是先将值存入内存中,然后将变量指向该值的内存地址

>>> x=3
>>> id(x)
1870807132528
>>> y=3
>>> id(y)
1870807132528
>>> y=5
>>> id(y)
1870807132592
>>> id(x)
1870807132528
>>> id(5)
1870807132592

基本输入输出

输入:input(‘提示’)

>>> a=input('这里是提示')
这里是提示你好
>>> a
'你好'

#python2中,input函数返回结果由输入时的值决定,而python3中的返回值全为字符串,等价于python2中的 raw_input() 函数

输出:print()

​ #python2中使用print语句输出,而python3中使用print()函数输出

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

参数:
  • objects – 复数,表示可以一次输出多个对象。输出多个对象时,需要用 , 分隔。
  • sep – 用来间隔多个对象,默认值是一个空格。
  • end – 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。
  • file – 要写入的文件对象。
  • flush – 输出是否被缓存通常决定于 file,但如果 flush 关键字参数为 True,流会被强制刷新。

模块导入与使用

  • import 模块名 [as 别名]

    这种方式导入以后,需要在要使用的对象之前加上前缀,即 “模块名.对象名” 的方式访问,设置别名后,可以使用 “别名.对象名” 的方式使用其中的对象。

    >>> import math
    >>> math.sin(0.5)
    0.479425538604203
    >>> import random as r
    >>> x=r.random()
    >>> x
    0.18782326766908408
  • from 模块名 import 对象名 [as 别名]

    使用这种方式仅导入明确指定的对象,并且可以为导入的对象起一个别名。这种导入方式可以 减少查询次数,提高访问速度,同时也减少了程序员需要输入的代码量,而不需要使用模块名作为前缀

    >>> from math import sin
    >>> sin(3)
    0.1411200080598672

#在导入模块时,python首先在当前目录中查找需要导入的模块,如果没有找到,则从sys模块的path变量查看python导入模块时搜索的模块的路径,也可以使用**append()**方法向其中添加自定义的文件夹以扩展搜索路径。

​ 在导入模块时,会优先导入相应的 .pyc文件,如果相应的.pyc文件与.py文件时间不相符或者不存在相应的.pyc文件,则导入.py文件并重新将该模块文件编译为.pyc文件。

​ 在大的程序中可能会需要导入很多模块,此时应该按照这样的顺序来以此导入模块

  1. 导入python标准库模块,如os、sys、re
  2. 导入第三方扩展库,如PIL、numpy、scipy
  3. 导入自己定义和开发的本地模块

代码编写规范

缩进

​ python程序是依靠代码块的缩进来体现代码之间的逻辑关系的。对于类定义、函数定义、选择结构、循环结构以及异常处理结构来说,行尾的冒号以及下一行的缩进表示一个代码块的开始,而缩进结束则表示一个代码块结束了。在编写程序中,同一个级别的代码块的缩进量必须相同

>>> a,b,c=3,4,5
>>> if a>b:
...     if a>c:
...             print(c)
...     else:
...             print(a)
... else:
...     if(b>c):
...             print(c)
...     else:
...             print(b)
...             print('OK')
...
4
OK

注释

行注释

​ 以符号 # 开始,表示本行#之后的内容为注释

块注释

​ 包含在一对三引号(’’’……’’’)或(”””……”””)之间,且不属于任何语句的内容将被解释器认为是注释

其他

​ 每个import语句只导入一个模块,尽量避免一次导入多个模块

如果一行语句太长,可以在行尾使用 续行符 “\” 来表示下面紧接的一行仍属于当前语句,但是一般建议使用括号来包含多行内容

​ 使用必要的空格和空行增强代码的可读性。一般来说,运算符的两侧,函数参数之间,逗号两侧建议使用空格进行分隔,而不同功能的代码块之间,不同的函数定义以及不同的类定义之间则建议增加一个空行以增加可读性

​ 适当使用异常处理结构提高程序容错性和健壮性,但不能过多依赖异常处理结构,适当的显式判断还是必要的

​ 软件应具有较强的可测试性,测试与开发齐头并进。

以上