Python3 基础学习笔记
2017-04-10 19:58
513 查看
Python3 基础学习笔记
这篇博客不是完整的python教程,只是我在学习python3时记下的一些容易忘记的或比较重要的知识点,里面的代码大多是转自 廖雪峰的python3教程 和 菜鸟教程 。不管怎样,还是希望本篇博客对读者有用。基础语法
py3里的print比py2多加了括号,使用方式为:print ("hello world!")
多行语句的实现方式为反斜杠 \
total = item_one + \ item_two + \ item_three
在 [], {}, 或 ()中的多行语句,不需要使用反斜杠()
total = ['item_one', 'item_two', 'item_three', 'item_four', 'item_five']
python3中的复数用 j 表示
基本数据类型
输出字符串时,如果不想让其中的\变成转义字符,可以在字符串前面加一个r。python中的字符串不能被改变(赋值)
算术运算符
% 返回除法的余数** 返回次幂
// 返回除法的整数
逻辑运算符只有 and or not
运算符的优先级:
编程第一步
关键字end可以用于将结果输出到同一行,或者在输出的末尾添加不同的字符,实例如下:a, b = 0, 1 while b < 1000: print(b, end=',') a, b = b, a+b
语句结构
条件语句中 elif 即c语言的 else iffor 循环的一些用法:
languages = ["C", "C++", "Perl", "Python"] for x in languages: print (x)
for i in range(0, 10, 3) : print(i)
数字
数学函数:随机数函数:
三角函数:
字符串
字符串运算符:字符串格式化输出:
print ("我叫 %s 今年 %d 岁!" % ('小明', 10))
python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。
字符串内建函数:
列表(list)
列表包含的方法:元组(tuple)
Python 的元组与列表类似,不同之处在于元组的元素不能修改。元组的元素不能被删除,但整个元组可以被删除。
元组使用小括号或者不加,列表使用方括号。
创建空元组只要一个括号。
创建一个元素的元组需要在元素后面加逗号。
字典(dictionary)
创建字典的语法:d = {key1 : value1, key2 : value2 }
字典的key可以是数字,字符串或元组,但不能是列表
字典的value可以有列表或字典
字典的内置方法:
迭代器和生成器
迭代器用于输出列表的几种方法:list=[1,2,3,4] it = iter(list) # 创建迭代器对象 for x in range(len(list)): print(next(it), end=" ")
list=[1,2,3,4] it = iter(list) for x in it: print (x, end=" ")
import sys # 引入 sys 模块 list=[1,2,3,4] it = iter(list) # 创建迭代器对象 while True: try: print (next(it), end=" ") except StopIteration: sys.exit()
生成器可以理解为一种特殊的函数,在执行generator过程中,遇到yield就中断,返回该返回的数,下次又继续执行,如果没有yield可执行了,就报错。例子:
def fib(n): a, b , counter = 0, 1, 0 while counter < n: yield b a, b = b, a+b counter += 1 import sys f = fib(20) print(type(f)) while True: try: print(next(f), end=' ') except StopIteration: sys.exit() for x in fib(20): print(x, end=' ')
函数
python3 调用函数时可使用的正式参数类型:#必须参数 def printme( str ): print (str) return printme()
#关键字参数 def printinfo( name, age ): print ("名字: ", name) print ("年龄: ", age) return printinfo( age = 22, name = "cyiano" )
#默认参数 def printinfo( name, age = 35 ): print ("名字: ", name) print ("年龄: ", age) return; printinfo(age=50, name="cyiano") print ("------------------------") printinfo(name="cyiano")
#不定长参数 def printinfo( arg1, *vartuple ): print ("输出: ") print (arg1) for var in vartuple: print (var) return printinfo( 10 ) printinfo( 70, 60, 50 )
python 函数中新加的变量为局部变量
数据结构
列表
python中的列表可以当做堆栈来使用,每次.pop()弹出的是最后的元素python中的列表还可以当做队列使用,每次.popleft()弹出的是最前的元素。例如:
from collections import deque queue = deque(["Eric", "John", "Michael"]) queue.popleft()
列表推导式:在一行内利用for、if语句生成数组。例如:
vec = [2, 4, 6, 8] [[x*2, x**2] for x in vec if x>2] v1 = [2, 4, 6] v2 = [4, 3, -9] [x*y for x in v1 for y in v2] [x+y for x in v1 for y in v2]
嵌套列表,以矩阵转置为例,实现方法如下:
matrix = [ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12] ] transposed = [[row[i] for row in matrix] for i in range(4)]
matrix = [ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12] ] transposed = [] for i in range(4): transposed.append([row[i] for row in matrix])
matrix = [ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12] ] transposed = [] for i in range(4): transposed_row = [] for row in matrix: transposed_row.append(row[i]) transposed.append(transposed_row)
用del把一个列表删成空列表的方式:del a[:]
遍历
字典的遍历方法:for k, v in knights.items():
列表的遍历方法:
for i, v in enumerate(['tic', 'tac', 'toe']):
反向遍历的方法:
for i in reversed(range(1, 10, 2)):
按顺序遍历集合的方法:
for f in sorted(set(basket)):
模块
一般的导入方法:import support support.name_access("cyiano")
在文件夹内的导入方法:
impor c642 t folder.support #文件夹最好不要有空格 folder.support.name_access("cyiano")
给模块内函数赋予本地名称:
import folder.support folder.support.name_access("cyiano") access = folder.support.name_access
from…import语句的使用:
from folder.support import name_access #导入模块特定函数 from folder.support import * #导入模块所有函数 name_access("cyiano")
使用包来管理python模块空间时,目录必须有一个 __init__.py 文件。
输入和输出
输出格式美化
print中字符串后面可以跟上 .ljust() 或 .rjust() 或 .center() 或 zfill()print中用.format()的话需要在语句里加大括号{},.format()会自动扫描大括号。大括号里的内容决定输出字符的排列,例如:
import math print('常量 PI 的值近似为 {0:5.10f}。'.format(math.pi)) # :前面数字代表format中的编号,5.10代表总长5位右对齐,保留10位小数
.format()里面可以是一个字典:
print('{name}网址: {site}'.format(name='菜鸟教程', site='www.runoob.com'))
比较旧的传递参数方式:
import math print('常量 PI 的值近似为:%5.10f。' % math.pi)
文件对象方法
打开一个文件:f = open("newtxt.txt", "r+") # "w"表示只写,"r"表示只读,"r+"表示可读又可写,还有其他模式
读和写:
f.read(15) # 读取15个字节,没有参数则读取所有 f.readline() # 读取一行 f.readlines() # 读取所有行并返回列表,有参数则按固定长度进行分割 f.write("ahahahaaha.....") # 从指针的位置开始写(会覆盖),必须是字符串 f.seek(5) # 移动指针位置 f.close() # 最后记得关闭文件
有一种方法可以在打开文件读取完毕后自动调用close()函数,就是使用with语句:
with open('/path/to/file', 'r') as f: print(f.read())
StringIO 和 BytesIO
很多时候,数据读写不一定是文件,也可以在内存中读写。StringIO顾名思义就是在内存中读写str,而BytesIO实现了在内存中读写bytes。pickle模块
错误和异常
try和except可以用来处理异常情况。except后面可以跟一个特定异常类型,或用元组表示的一组类型,或者什么都不跟(任何异常都会触发)。如果使用else语句,必须在except后面。else语句在没有异常时执行。
finally语句不论有无异常都会执行。
while True: try: x = int(input("Please enter a number: ")) except OSError as err: print("OS error: {0}".format(err)) except ValueError: print("Not a valid number! Try again! ") else: print("You just have inputed: {}".format(x)) finally: print("next round: ")
抛出一个异常使用raise语句,raise后面跟上特定的异常类型。
def division(x, y): if y == 0 : raise ZeroDivisionError('The zero is not allow') return x / y try: division(2, 0) except ZeroDivisionError as e: print(e) # 另一种方法 try: division(2, 0) except ZeroDivisionError: raise
标准库概览
操作系统接口:os, shutil,文件通配符:glob
命令行参数、错误输出重定向和程序终止:sys
字符串正则匹配:re
数学:math, random
日期和时间:datetime
数据压缩:zlib
模块测试:doctest, unittest
相关文章推荐
- Python基础学习笔记一
- Python基础学习笔记
- Python学习笔记 02 Python基础
- python基础学习笔记(五)
- python基础学习笔记(二)
- Python基础学习笔记二
- Python学习笔记---基础汇总部分
- Python学习笔记-Python基础
- Python基础教程学习笔记----第三章 字符串
- python基础学习笔记(四)
- Python基础学习笔记四
- python 3.0学习笔记之二------python基础小知识
- Python核心编程(第二版)学习笔记02 【第3章 Python基础】
- Python学习笔记整理(十四)类基础
- 滴水穿石--python 学习笔记--基础
- Python基础学习笔记五
- Python学习笔记 02 Python基础
- Python学习笔记一 基础知识
- python学习笔记1:基础知识
- python基础学习笔记(一)