简明Python教程 - 学习笔记
1,第一步
cmd下运行python文件 :python 文件名。(在文件目录下)
退出python解释器:ctrl + z 或 exit() 回车
进入帮助模式:help(),退出:q 或 回车
2,基础
注释:是任何存在于#号右侧的文字
字面常量
数字:整数(int)与浮点数(float)
字符串:单引号、双引号、三引号(可作多行注释)# 字符串是不可变的
格式化方法:format()
format()方法所做的事情是将每个参数值替换至格式所在的位置
print('{} was {} years old when he wrote this book'.format(name, age))
print('{0:.3f}'.format(1.0/3)) # 保留小数点后三位
print('{0:_^11}'.format('hello')) #使用下划线填充,保持文字处于中间位置,长度为11
print('{name} wrote {book}'.format(name='Swaroop', book='A Byte of Python')) #基于关键词输出
print总是会以一个不可见的换行(\n)结尾,重复调用会在新一行中打印,可通过参数end指定以空白结尾:
print('a', end='')
print('b', end='')
转义序列或续行:\
原始字符串:在字符串前增加 r 或 R
Python中,一切皆对象(数字、字符串、函数)
3,运算符与表达式
- 运算符:+(加)、-(减)、*(乘)、**(乘方)、/(除)、//(整除)、%(取模)、<<(左移)、>>(右移)、&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、<、>、<=、>=、==、!=、not(布尔非)、and(布尔与)、or(布尔或)
- 数值运算与赋值的快捷方式:a *=3 等价于 a = a * 3
4,控制流
- if语句:if-elif-...-else
- while语句
- for循环:for...in...[else]
- break:结束循环
- continue:结束本次循环
5,函数
- 定义:def
- 函数参数:形参、实参
- 局部变量:函数内的参数的作用域只在函数内部
- global语句:声明一个全局变量
- 默认参数:为函数参数设置默认参数,注意要在参数列表末尾才能被赋予默认参数值,因为参数值是按位置依次分配的
- 关键字参数:使用关键字提供实参,不需要考虑参数的使用顺序。位置参数必须在关键字参数之前(形参和实参都是)
- 可变参数: *param(星号参数)从此处开始直到结束的所有位置参数都被收集并汇集成一个“param”元组; **param(双星号参数)从此处开始直至结束的所有关键字参数都被收集并汇集成一个“param”字典
- return语句
- DocStrings(文档字符串):函数的第一逻辑行中的字符串为该函数的文档字符串。可使用函数的__doc__属性来获取其文档字符串。(约定:第一行以某一大写字母开始,以句号结束,第二行为空行,后面的第三行是更详细的解释说明。)
6,模块
- import:sys.argv(命令行参数列表)、sys.path(系统环境变量)、os.getcwd()(查看当前目录)
- from..import:尽量避免使用。from..import *:不会导入双下滑线属性
- 模块的__name__:可以通过这一属性来使模块以不同的方式运行,是独立运行的还是从其他模块导入的,也即是运行的那个模块其__name__为__main__,其他导入的模块__name__为其模块名
- dir()函数:返回对象(任何对象:模块、类、函数、数字、字符串)的名称列表(导入的模块、类、函数、变量),无参数时返回当前模块的名称列表。vars()也可以返回这些值的属性,但只是可能,并不能针对所有类都能正常工作。
- 包:是指包含模块与一个特殊的__init__.py文件的文件夹,能够方便地分层组织模块。
7,数据结构----列表、元组、字典、集合
- 列表(可变的):是一种用于保存一系列有序项目的集合
- 元组(不可变):用于将多个对象保存到一起,通常用于保证某一语句或某一用户定义的函数可以安全的采用一组数值,即元组内的数值不会改变。# 注意:若赋值只有一个元素的元组需要加逗点以区分括号(2,)
- 字典:键值对且唯一,只能使用不可变的对象(如字符串)作为字典的键值,可使用可变或不可变的对象作为字典中的值。# 字典的items()方法访问键值对;in 检查某对键值对是否存在;del 删除某一键值对
- 序列(列表,元组,字符串):序列的主要功能是资格测试,即 in 或 not in 表达式和索引操作。切片运算符:[开始位置 : 结束位置 : 步长]。# 注意:索引和步长可以是负数;数字可选,冒号必须有;切片包括开始位置不包括结束位置。
- 集合:简单对象的无序集合,当集合中的项目存在与否比起次序或次数更重要时,使用集合。
- 引用:当创建一个对象并将其分配给某个变量时,变量只会查阅某个对象,并且它不会代替对象本身。如:列表的赋值不会创建副本,必须使用切片操作生成一份序列的副本。
- 有关字符串的更多内容:startswith()方法用于查找字符串是否以给定的字符串内容开头;in 运算符用以检查给定的字符串是否是其中一部分;find()方法用于定位字符串中给定的字符串的位置,找不到返回-1;join()方法将序列中的项目(如字符串列表)进行连接。
9,面向对象编程
- class关键字创建一个类:从属于对象或类的变量叫字段(从属于实例的叫实例变量:__init__初始化的,从属于类的叫类变量);使用属于类的函数实现某些功能,这种函数叫方法;他们都是类的属性。
- self:这种特定的变量引用的是对象本身。# 假如有一个MyClass的类,类下有一个实例myobject,当调用这个对象的方法时,如myobject.method(arg1, arg2)时,Python将会自动将其转换成MyClass.method(myobject, arg1, arg2),这就是self的全部特殊之处。
- __init__ 方法:会在类的对象被实例化时立即运行。初始化类属性中的实例变量。
- 类变量与对象变量:类变量是共享的,可以被属于该类的所有实例访问,只有一个副本;对象变量不会被共享,由类的每一个独立的实例拥有,每个实例都有属于它自己的字段的副本。# 注意:当对象变量与类变量相同时,类变量会被隐藏。# 除了使用【类.变量】还可以使用【self.__class__.类变量】,因为每个对象都通过【self.__class__】属性引用它的类。
- 使用装饰器将类标记为类方法:@classmathod
- 私有变量:形如__privatevar。# 注意:约定任何在类或对象中使用的变量以下划线开头,其他非此格式的名称都是公开的。
- 继承:在类后面跟一个包含基类的元组。显式的调用基类的__init__方法进行初始化基类,如果没有定义__init__,将会自定调用基类的构造函数。调用基类方法是通过方法名前面加上基类名作为前缀,再传入self来调用基类的方法,此时可以将子类看作父类的实例。# 注意:Python总是从当前的世纪类型中开始寻找方法,若找不到就会在父类中依顺序逐个寻找。
10,输入与输出
- input() 和print():对于输入,还可以使用str类的各种方法,如rjust
- 文件:file类的对象,read、readline、write、close、open等方法。
- pickle标准模块:可以将任何纯python对象存储到一个文件中,并在稍后将其取回。# open以wr模式打开你文件,然后调用pickle的dump函数,这一过程叫做封装(Pickling)。使用pickle的load函数接受返回的对象,这个过程叫拆封(Unpickling)。
- Unicode类型:当与互联网上的其他计算机通信时,需要将Unicode转换为utf-8格式。在程序顶端注释 # encoding=utf-8 表示程序使用utf-8。# io模块,io.open(.., .., encoding='utf-8')
11,异常
- 错误、异常:EOF(end of file,文件结尾符号)ctrl + d;KeyboardInterrupt ctrl + c
- 处理异常:try..except..[else],每个try至少要有一个except
- 抛出异常(raise):能够引发的错误或异常必须是直接或间接从属于Exception类的派生类 # except..as..
- try..finally:在处理异常后finally后的语句将执行。如读取文件时中断,在finally中关闭文件。也即是在try中获取资源,在finally中释放资源。# with语句,with open() as f: 自动完成
12,标准库
- sys模块:包括一些针对特定系统的功能。sys.argv,sys.version_info
- 日志模块logging:更多参考Python标准库文档
13,更多
- 传递元组:如函数返回不同的值,可使用元组返回
- 特殊方法:__getitem__, __init__, __del__, __str__, __lt__, __len__
- 单语句块:语句块只有一句或较少时,可写在同一行
- lambda语句:创建一个新的函数对象,后跟一个参数和表达式
points = [{'x': 2, 'y': 3},
{'x': 4, 'y': 1}]
points.sort(key=lambda i: i['y'])
print(points) 输出:
[{'y': 1, 'x': 4}, {'y': 3, 'x': 2}]- 列表推导:
listone = [2, 3, 4]
listtwo = [2*i for i in listone if i > 2]
print(listtwo)
输出:
[6, 8]
- 在函数中接收元组与字典:*前缀将函数的其他额外参数都传递到args元组里,**前缀将额外的参数当做字典的键值对。
>>> def powersum(power, *args):
... '''Return the sum of each argument raised to the specified power.'''
... total = 0
... for i in args:
... total += pow(i, power)
... return total
...
>>> powersum(2, 3, 4)
25
>>> powersum(2, 10)
100
- 装饰器
- 下一步
简明Python教程 - 学习笔记的更多相关文章
- 《简明python教程》笔记一
读<简明Python教程>笔记: 本书的官方网站是www.byteofpython.info 安装就不说了,网上很多,这里就记录下我在安装时的问题,首先到python官网下载,选好安装路 ...
- 简明Python教程自学笔记——命令行通讯录
[前言]学习Python已经有一段时间了,相关的书籍资料也下载了不少,但是没有一本完整的看完,也没有编出一个完整的程序.今天下午比较清闲就把<简明Python教程>看了一遍,然后根据书里面 ...
- 简明 Python 教程--学习记录
注意,我们在print语句的结尾使用了一个 逗号 来消除每个print语句自动打印的换行符.这样做有点难看,不过确实简单有效. print # prints a blank line 注意,没有返回值 ...
- 《简明python教程》笔记二
面向对象的编程: 类和对象是面向对象编程的两个主要方面.类创建一个新类型,而对象是这个类的实例.对象可以使用普通的属于对象的变量存储数据.属于一个对象或类的变量被称为域.对象也可以使用属于类的函数来具 ...
- 《简明python教程》笔记三
图形软件(GUI工具) 可供选择的GUI: 一.PyQT 是Qt工具包的python绑定.Qt工具包是构建KDE的基石.linux下使用免费,windows下使用收费. 二.PyGTK 是GTK+工具 ...
- 《简明 Python 教程》笔记
基础 字符串:python 中字符串可以用单引号.双引号和三个引号括起来,其中三个引号可以用来指定多行的字符串. print('hello'* 3) 连续打印 3 个 hello 格式化:print ...
- 莫烦python教程学习笔记——保存模型、加载模型的两种方法
# View more python tutorials on my Youtube and Youku channel!!! # Youtube video tutorial: https://ww ...
- 莫烦python教程学习笔记——validation_curve用于调参
# View more python learning tutorial on my Youtube and Youku channel!!! # Youtube video tutorial: ht ...
- 莫烦python教程学习笔记——learn_curve曲线用于过拟合问题
# View more python learning tutorial on my Youtube and Youku channel!!! # Youtube video tutorial: ht ...
随机推荐
- bom中的offset,client,scroll
简单明了
- Android开发-记账本布局-实现记账页面功能选择
记账页面需要软件盘的弹出,时间的显示和记账类型的选择.为了实现选择的效果,点击图片图片发生变化. 需要制作记账类型数据库,并设置单机事件,单机图片,图片变色,代表选中. 至于软键盘的制作,我直接拿来用 ...
- ApacheCN 计算机视觉译文集 20211110 更新
OpenCV3 和 Qt5 计算机视觉 零.前言 一.OpenCV 和 Qt 简介 二.创建我们的第一个 Qt 和 OpenCV 项目 三.创建一个全面的 Qt + OpenCV 项目 四.Mat和Q ...
- 「CTSC 2011」排列
「CTSC 2011」排列 要求不存在公差为 A 或者公比为 B 的子列,那么实际上可以把该问题转化为求一个图的最优拓朴序. 任意差为 A 或者比为 B 的两个数连一条边. 求一个合法序列的答案可以用 ...
- AT5760 Manga Market
首先一个想法就是可以考虑令 \(dp_{i, j}\) 表示当前考虑到了第 \(i\) 个商店,当前到了时刻 \(j\) 能走过最多的商店数量.但是你会发现这个 \(dp\) 转移的顺序并不是简单的从 ...
- 用Dockerfile部署zabbix
用Dockerfile部署 zabbix-server部署阶段 要用docker跑zabbix-server,需要以下几个组件 组件名称 作用 数据库 MySQL或是PostgreSQL Zabbix ...
- Category注意事项
1.分类的使用注意事项 分类只能增加方法, 不能增加成员变量 @interface Person (NJ) { // 错误写法 // int _age; } - (void)eat; @end 分类中 ...
- Python--变量和简单数据类型
Python--变量和简单数据类型 目录 Python--变量和简单数据类型 一.Python脚本运行过程 二.变量 1. 变量的命名和使用 2. Python关键字和内置函数 2.1 Python关 ...
- 关于 BSGS 以及 ExBSGS 算法的理解
BSGS 引入 求解关于\(X\)的方程, \[A^X\equiv B \pmod P \] 其中\(Gcd(A,P)=1\) 求解 我们令\(X=i*\sqrt{P}-j\),其中\(0<=i ...
- Express中使用session
1.安装express-session npm install express-session --save-dev //注意-g无效 2.app.jsvar session = require('e ...