《python(廖雪峰课程)》学习笔记(个人检索)

1. 第一个python程序

input & output

print输出字符串可以用””or’’

print(,)中的逗号打印为空格

win不能直接执行.py;linux、mac可以,需在前面加一行代码(略)

代码缩进按照惯例为4个空格

python大小写敏感!

2. python基础

数据类型和变量

整数int

浮点数float

字符串

多行字符串’’’ ‘’’

布尔值True&False

空值None

变量

字符串和编码

字符编码

ASCII
1字节
Unicode
2字节
  • 一般用于内存
UTF-8
可变长
  • 一般用于硬盘和传输
ord(‘ ’)获取字符的整数表示
chr()编码转换为对应字符
X=“ABC”将str“ABC”以字节bytes存储

格式化

%d %f %s %x
格式化输出
  • %

    • %.1f
    • %%转义
  • format()
    • 需要指定位置{0:.1f}.format(x)
  • f-string
    • f‘string’中{x:.1f},{x}以x的值替换

使用list和tuple

list

可以用负整数表示list的从后面开始的位置
其中的数据类型可以不同

tuple

只有1个元素时定义:t=(1,)

条件判断

if elif else:

循环

for x in X:
while …:
break
continue

使用dict和set

dict

set

以list为输入集合

3. 函数

调用函数

数据类型转换

数据类型检查函数:isinstance()
instance(x,(int,float))
抛出错误提示:raise TypeError(‘bad operand …’)

定义函数

def

空函数pass
参数检查
返回多个值
import math,导入math包

函数的参数

位置参数

默认参数

必须指向不变对象
list[]不能作为默认对象,每次调用会改变list的值;或者,list用None默认,函数中判断是否为None再赋值

可变参数

传入的参数可以是可变参数*args,还很常用

关键字参数

用于扩展函数的功能
**kw一般是dict

命名关键字参数

必须传入参数名
有两种函数定义形式args

递归函数

尾递归优化栈溢出

return不包含表达式
python没有对尾递归进行优化的机制

遗留的问题:汉诺塔移动

参数组合

顺序必须是:必选参数、默认参数、可变参数、命名关键字参数、关键字参数

4. 高级特性

代码越少,开发效率越高

切片slice

[::]

List,tuple,字符串

迭代iteration

任意可迭代对象

from cllections.abc import Iterable/isinstance(‘abc’,Iterable):判断是否为可迭代对象
enumerate:把list变成索引-元素对

列表生成式list comprehensions

[表达式 for x in list if 筛选条件]

生成器generator

一边循环一边计算

列表生成式外面的[]变为()

定义的函数中的print变为yield关键字

碰到yield才返回并中断,从yield处继续执行直到下一个yield
多次调用generator函数会创建多个独立的generator
next(o)和next(odd())不同

杨辉三角

迭代器

5. 函数式编程

高阶函数

map/reduce

filter

sorted

返回函数

匿名函数

lambda

只能有1个表达式

也是1个函数对象,可赋值再调用

装饰器

在代码运行期间动态增加功能

结合B站视频理解

(记住格式!)
 def outer(origin):def inner(*args,**kw):#执行前res = origin(*args,**kw)#执行后return resreturn inner

偏函数

functools.partial( , xxx=2)

固定函数中的某个参数

6. 模块

1个.pay文件就是1个模块

相同名字的函数、变量可放在不同模块中

按目录组织模块——包(Package)

包下的__init__.py文件必须存在

使用模块

任何模块代码的第一个字符串都被视为模块的文档注释

作用域

_前缀的函数和变量是private,不该被其他模块直接引用
模块中的内部函数定义为private,被其他模块引用的变量和函数定义为public

安装第三方模块

pip

anaconda

基于python的数据处理和科学计算平台

模块搜索路径

添加自己的搜索目录
直接修改sys.path
设置环境变量PYTHONPATH进行添加

7. 面向对象编程

Object Oriented Programming, OOP

类class和实例instance

类既包含数据,又包含数据操作的方法

定义类:

class Student(Object):Pass

创建实例:

bart = Student(……)

绑定属性:例如name属性

bart.name = ‘Bart Simpson’——实例属性

定义特殊__init__方法,在创建实例时把属性绑定上去:——类属性

class Student(Object)Def __init__(self, name, score)#固定第一个是self,表示创建的是实例本身,调用时不用传递该参数Self.name = nameSelf.score = score

数据封装

在类的内部定义访问数据的函数get()

访问限制

+2个下划线__变为私有变量

(1个下划线的不要随意访问)

再用内部函数/方法去输出

继承和多态

子类(subclass)-基类、父类、超类(baseclass、superclass)

同样的函数/方法,子类覆盖父类执行

多态
数据类型是某个子类,该数据类型也可以看作父类
子类可以随意增/减,不影响父类,都可以调用父类的方法
开闭原则
  • 对扩展开放:允许新增Animal子类
  • 对修改封闭:不需要修改依赖父类的函数

静态语言

《python(廖雪峰课程)》学习笔记相关推荐

  1. 第二行代码学习笔记——第六章:数据储存全方案——详解持久化技术

    本章要点 任何一个应用程序,总是不停的和数据打交道. 瞬时数据:指储存在内存当中,有可能因为程序关闭或其他原因导致内存被回收而丢失的数据. 数据持久化技术,为了解决关键性数据的丢失. 6.1 持久化技 ...

  2. 第一行代码学习笔记第二章——探究活动

    知识点目录 2.1 活动是什么 2.2 活动的基本用法 2.2.1 手动创建活动 2.2.2 创建和加载布局 2.2.3 在AndroidManifest文件中注册 2.2.4 在活动中使用Toast ...

  3. 第一行代码学习笔记第八章——运用手机多媒体

    知识点目录 8.1 将程序运行到手机上 8.2 使用通知 * 8.2.1 通知的基本使用 * 8.2.2 通知的进阶技巧 * 8.2.3 通知的高级功能 8.3 调用摄像头和相册 * 8.3.1 调用 ...

  4. 第一行代码学习笔记第六章——详解持久化技术

    知识点目录 6.1 持久化技术简介 6.2 文件存储 * 6.2.1 将数据存储到文件中 * 6.2.2 从文件中读取数据 6.3 SharedPreferences存储 * 6.3.1 将数据存储到 ...

  5. 第一行代码学习笔记第三章——UI开发的点点滴滴

    知识点目录 3.1 如何编写程序界面 3.2 常用控件的使用方法 * 3.2.1 TextView * 3.2.2 Button * 3.2.3 EditText * 3.2.4 ImageView ...

  6. 第一行代码学习笔记第十章——探究服务

    知识点目录 10.1 服务是什么 10.2 Android多线程编程 * 10.2.1 线程的基本用法 * 10.2.2 在子线程中更新UI * 10.2.3 解析异步消息处理机制 * 10.2.4 ...

  7. 第一行代码学习笔记第七章——探究内容提供器

    知识点目录 7.1 内容提供器简介 7.2 运行权限 * 7.2.1 Android权限机制详解 * 7.2.2 在程序运行时申请权限 7.3 访问其他程序中的数据 * 7.3.1 ContentRe ...

  8. 第一行代码学习笔记第五章——详解广播机制

    知识点目录 5.1 广播机制 5.2 接收系统广播 * 5.2.1 动态注册监听网络变化 * 5.2.2 静态注册实现开机广播 5.3 发送自定义广播 * 5.3.1 发送标准广播 * 5.3.2 发 ...

  9. 第一行代码学习笔记第九章——使用网络技术

    知识点目录 9.1 WebView的用法 9.2 使用HTTP协议访问网络 * 9.2.1 使用HttpURLConnection * 9.2.2 使用OkHttp 9.3 解析XML格式数据 * 9 ...

  10. 安卓教程----第一行代码学习笔记

    安卓概述 系统架构 Linux内核层,还包括各种底层驱动,如相机驱动.电源驱动等 系统运行库层,包含一些c/c++的库,如浏览器内核webkit.SQLlite.3D绘图openGL.用于java运行 ...

最新文章

  1. 通过windows系统封杀IP与端口
  2. 服务器开发的一些框架或者工具收集
  3. sprintf函数_三分钟学 Go 语言——函数深度解析(下) 可变参数
  4. (九)nodejs循序渐进-Express框架(进阶篇)
  5. 学会了PowerBI简单的托托拽拽,是时候学习下DAX了
  6. 【Flink】Flink 写入到 CSV BucketingSink 的使用方法
  7. 阿里云眼中的“云网络3.0”:构建应用、云、边一体网络
  8. Cocos2D:塔防游戏制作之旅(九)
  9. 百胜中国供应链管理中心正式开工落户上海嘉定;百度发布第六代量产无人车 | 美通企业日报...
  10. rl滤波器原理_滤波器基本知识
  11. python计算增长率函数_python – 基于增长率优化值的迭代计算
  12. 使用wireshark分析HTTPS数据包
  13. Vue学习(学习打卡Day12)
  14. 主板开启网络唤醒_电脑网络唤醒如何关闭?华硕路由网络唤醒?#TIL#网络唤醒(WOL)除了设置主板,还需要操作系...
  15. Java日志文档怎么写
  16. API监控平台,统一监控系统API
  17. 志强系列的服务器能吃鸡吗,英特尔 xeon e5-2660能玩绝地求生吗
  18. 二十世纪的十大科学骗局
  19. 可能是最详细的字符编码详解
  20. MAC电脑 安全与隐私 中没有任何来源选项怎么办

热门文章

  1. 解决win10笔记本睡眠后无法唤醒甚至自动关机的问题
  2. 使用Python获取DNS记录
  3. 武警摔擒、擒敌拳1-16动连贯动作 分解动作
  4. vs2015+openCV(x64)出现运行时”无法查找或打开 PDB 文件”问题
  5. linux 下搭建portal服务器搭建,Linux环境下IBM WebSphere Portal v8.5独立服务器安装记录...
  6. 每天听的一首歌---奔跑
  7. 感谢、感恩与CSDN结缘的第1498天
  8. Python 报错 Fatal Python error: PyFrame_BlockPop: block stack underflow 如何解决?
  9. 寒武纪MLU270 平台 CNStream 学习记录
  10. 智能工厂设备无人值守系统方案