python总结

python阶段总结
-------- 总结python的基本语法、程序结构、函数和模块学到的知识点

一.python的基本语法

数据类型和运算

  在Python中数据类型有两种:数值类型和字符串类型。数值类型包括整型(包括长整型)、浮点型
  以及复数类型(复数虚部以j或J标识)。
  Python中的算术运算符主要有 +(加法),-(减法或者取反),(乘法),/(整除) ,% (取余),**(乘方)
  在这里要注意的是,整除运算和取余运算。
  对于字符串来说,最常用的有+和
两种运算,+表示把两个字符串进行连接,*表示连乘。
  在Python中,逻辑运算符分别是and、or和not(这个跟C语言中的逻辑运算符不一样),真为True,假为False。

标识符

第一个字符必须是字母表中字母或下划线'_'。
标识符的其他的部分有字母、数字和下划线组成。
标识符对大小写敏感。

注释

Python中单行注释以 # 开头,例如:
print ("Hello, Python!") # 第一个注释

多行注释可以用多个 # 号。

行与缩进

python是使用缩进来表示代码块,不需要使用大括号({})。

缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。如:

if True:
    print ("True")
else:
    print ("False")

多行语句

Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠()来实现多行语句,例如:

total = item_one + \
        item_two + \
        item_three

在 [], {}, 或 () 中的多行语句,不需要使用反斜杠(),例如:

total = ['item_one', 'item_two', 'item_three',
        'item_four', 'item_five']

字符串

python中单引号和双引号使用完全相同。
使用三引号('''或""")可以指定一个多行字符串。
转义符 ''
自然字符串, 通过在字符串前加r或R。 如 r"this is a line with \n" 则\n会显示,并不是换行。
python允许处理unicode字符串,加前缀u或U, 如 u"this is an unicode string"。
字符串是不可变的。

空行

函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。

空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。

空行也是程序代码的一部分。

同一行显示多条语句

Python可以在同一行中使用多条语句,语句之间使用分号(;)分割,例如:

import sys; x = 'runoob'; sys.stdout.write(x + '\n')

输入结果为:

 $ python3 test.py
   runoob

print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end="":

x="a"
y="b"
print( x )
print( y )
print('---------')
print( x, end=" " )
print( y, end=" " )
print()

执行结果为:

a
b
---------
a b

import 与 from...import

在 python 用 import 或者 from...import 来导入相应的模块。

将整个模块(somemodule)导入,格式为:

 import somemodule

从某个模块中导入某个函数,格式为:

 from somemodule import somefunction

从某个模块中导入多个函数,格式为:

 from somemodule import firstfunc, secondfunc, thirdfunc

将某个模块中的全部函数导入,格式为:
from somemodule import *

导入 sys 模块

   import sys
   print('================Python import
   mode==========================');
   print ('命令行参数为:')
   for i in sys.argv:
   print (i)
   print ('\n python 路径为',sys.path)

python程序结构、函数和模块学到的知识点

返回多个值的函数

若想返回多个值,函数直接return一个元组就可以。例如:

 def myfun():
     return 1, 2, 3
 a, b, c = myfun()
 print(a)
 print(b)
 print(c)

结果为:

1
2
3

定义有默认参数的函数

定义一个有可选参数的函数,就直接在函数定义中给参数指定一个默认值,并放到参数列表最后就行了。例如:

def spam(a, b=42):
print(a, b)
spam(1) # Ok. a=1, b=42
spam(1, 2)

如果默认参数是一个可修改的容器比如一个列表、集合或者字典,可以使用None作为默认值,例如这样:

def spam(a, b=None):
    if b is None:
        b = []

减少可调用对象的参数个数

如果需要减少某个函数的参数个数,你可以使用 functools.partial() 。 partial() 函数允许你给一个或多个参数设置固定的值
减少接下来被调用时的参数个数。 使用 partial() 函数来固定某些参数值:

>>> from functools import partial
>>> s1 = partial(spam, 1) # a = 1
>>> s1(2, 3, 4)
1 2 3 4
>>> s1(4, 5, 6)
1 4 5 6
>>> s2 = partial(spam, d=42) # d = 42
>>> s2(1, 2, 3)
1 2 3 42
>>> s2(4, 5, 5)
4 5 5 42
>>> s3 = partial(spam, 1, 2, d=42) # a = 1, b = 2, d = 42
>>> s3(3)
1 2 3 42
>>> s3(4)
1 2 4 42
>>> s3(5)
1 2 5 42

切片

内置的 slice() 函数创建了一个切片对象,可以被用在任何切片允许使用的地方。比如:
>>> items = [0, 1, 2, 3, 4, 5, 6]
>>> a = slice(2, 4)
>>> items[2:4]
[2, 3]
>>> items[a]
[2, 3]
>>> items[a] = [10,11]
>>> items
[0, 1, 10, 11, 4, 5, 6]
>>> del items[a]
>>> items
[0, 1, 4, 5, 6]

保留最后 N 个元素

保留有限历史记录使用 collections.deque 。比如

from collections import deque
def search(lines, pattern, history=5):
previous_lines = deque(maxlen=history)
for line in lines:
    if pattern in line:
        yield line, previous_lines
    previous_lines.append(line)

通过某个关键字排序一个字典列表

通过使用 operator 模块的 itemgetter 函数,可以非常容易的排序这样的数据结构。 并且以下列的数据结构返回:

rows = [
{'fname': 'Brian', 'lname': 'Jones', 'uid': 1003},
{'fname': 'David', 'lname': 'Beazley', 'uid': 1002},
{'fname': 'John', 'lname': 'Cleese', 'uid': 1001},
{'fname': 'Big', 'lname': 'Jones', 'uid': 1004}
]

根据任意的字典字段来排序输入结果行,代码示例:

 from operator import itemgetter
rows_by_fname = sorted(rows, key=itemgetter('fname'))
rows_by_uid = sorted(rows, key=itemgetter('uid'))
print(rows_by_fname)
print(rows_by_uid)

随机选择

random 模块有大量的函数用来产生随机数和随机选择元素。 比如,要想从一个序列中随机的抽取一个元素,可以使用 random.choice() :

>>> import random
>>> values = [1, 2, 3, 4, 5, 6]
>>> random.choice(values)
2
>>> random.choice(values)
3
>>> random.choice(values)
1
>>> random.choice(values)
4
>>> random.choice(values)

为了提取出N个不同元素的样本用来做进一步的操作,可以使用 random.sample() :

>>> random.sample(values, 2)
[6, 2]
>>> random.sample(values, 2)
[4, 3]

import 语句

想使用 Python 源文件,只需在另一个源文件里执行 import 语句,语法如下:

import module1[, module2[,... moduleN]

当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。

搜索路径是一个解释器会先进行搜索的所有目录的列表。如想要导入模块 support,需要把命令放在脚本的顶端:

support.py 文件代码为:

def print_func( par ):
print ("Hello : ", par)
return

__name__属性

一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身运行时执行。

if __name__ == '__main__':
print('程序自身在运行')
else:
print('我来自另一模块')

运行输出如下:

程序自身在运行

dir() 函数

内置的函数 dir() 可以找到模块内定义的所有名称。以一个字符串列表的形式返回:

>>> import fibo, sys
>>> dir(fibo)
['__name__', 'fib', 'fib2']
posted @ 2017-10-15 14:11  Doranmi  阅读(129)  评论(0编辑  收藏  举报