一. 初识python.

1. 认识计算机

CPU(大脑) 3GHZ + 内存(DDR4) + 主板 + 电源(心脏)+ 显示器 + 键盘 +鼠标+ 显卡 + 硬盘 80MB/s

操作系统

windows 家用

linux 服务器

macOS 家用+服务器

计算机是一个高度集成的电子电路

高低电平. 二进制

二进制没有2 -> 0 1

八进制没有8 -> 0-7

十进制没有10 -> 0-9

十六进制没有16 -> 0-9 A-F

显卡

1. NAVID 看型号。

2. AMD 图形处理

2. python历史

python是一门弱类型解释型高级编程语言

编译型, 把写好的程序编译成计算机认识的二进制

优点:一次编译到处运行。 运行效率高, 开发效率低 0.001s

解释型,

缺点:运行慢   0.01s

优点:开发效率高. 简单

3. python的版本

2.x   老版本已经不再更新,2020年已将淘汰

3.x   学习用这个

4. 安装

网址:python.org

选择:3.6.5    mac选择macOS 64-bit installer

安装:

5. 编辑器的选择

1. 所有的文本编辑器都可以编写代码。记事本,Editplus,sublime, pycharm(收费)

2. 可以在命令行写代码.

6. 第一个python程序

python程序有两种编写方式:

1. 进入cmd控制台. 输入python进入编辑模式. 这时候我们可以直接编写python程序

2. 也可以在.py文件中编写python代码. 通过python命令来执行python代码

7. 变量

概念: 把程序运行过程中产生的中间值保存在内存. 方便后面使用.

命名规范:

1. 数字, 字母, 下划线组成

2. 不能数字开头, 更不能是纯数字

3. 不能用关键字

4. 不要用中文

5. 要有意义

6. 不要太长

7. 区分大小写

8. 驼峰或者下划线命名

数据类型:

1. int 整数 +-*/ % // **

2. str 字符串 ', ", ''', """ 括起来的内容 +拼接 (用"+"连接的两端必须是字符串),*重复("*"后面必须跟的是数字),

3. bool 布尔 True, False

4.换行:"\n"表示转移字符,换行. 三个单引号或者三个双引号中的字符串内回车即可换行

5.类型转换

int(str)    # 字符串转换成整数

str(int)    # 整数转换成字符串

8. 常量

本质就是变量. 所有字母都大写

9. 用户交互

变量 = input(提示语)

所有的输入的内容都是字符串

int(变量) 把变量转化成数字

10. if条件判断

1.

if 条件:

if语句块

执行流程:判断条件是否为真. 如果真. 执行if语句块

2.

if 条件:

if语句块

else:

else语句块

执行流程:判断条件是否为真. 如果真. 执行if语句块 否则执行else语句块

3.

if  条件1:

if-1

elif 条件2:

if-2

elif 条件3:

if-3

....

else:

else语句块

执行流程:

判断条件1是否成立, 如果成立执行if-1

否则如果条件2成立, 执行if-2

否则如果条件3成立, 执行if-3

....

否则执行else语句块

4. 嵌套

if 条件:

if 条件:

..

else:

if 条件:

...

11. while循环

while 条件:

循环体(break, continue)

能够让循环退出: 1. break 2. 改变条件

continue 停止当前本次循环,继续执行下一循环

break 彻底的干掉一个循环

二.运算符和编码

1. 格式化输出

%s就是代表字符串的占位符,可以代替所有

%d,是数字占位符,只能代替数字

name = input("请输入你的名字:")

address = input("你来自哪里:")

hobby = input("你喜欢什么:")

#比较繁琐的方式

print("我叫"+name+",我来自"+address+",我喜欢"+hobby)

#通用的方式

print("我叫%s,我来自%s,我喜欢%s" % (name,address,hobby))

# python的新版本的方式,简单

print(f"我叫{name},我来自{address},我喜欢{hobby}")

print("我叫%s,我已经度过了人生的30%%" % "好人") #如果占位时字符串中有%,需要用%%来表示

2. 运算符 and or not (难点)

1.算数运算符

2. 比较运算符

3.赋值运算符

4.逻辑运算符

运算顺序: ()=> not => and =>or

当出现 X or Y 时,判断X是否为0,如果X是0,则输出Y,否则返回X

当出现 X and Y 时,判断X是否为0,如果X是0,则输出X,否则输出Y

True相当于非0   ,  False相当于0

补充:in和not in

可以判断xxx字符串是否出现在xxxxx字符串中

content = input("请输入你的评论")

if "苍老师" in content or '邱老师' in content:

print('你输入的内容不合法')

else:

print("评论成功")

3. 初识编码 gbk unicode utf-8

1. ascii 8bit 1byte(字节) 256个码位 只用到了7bit, 用到了前128个 最前面的一位是0

2. 中国人自己对计算机编码进行统计. 自己设计. 对ascii进行扩展 ANSI 16bit -> 清华同方 -> gbk

GBK 放的是中文编码. 16bit 2byte 兼容ascii

3. 对所有编码进行统一. unicode. 万国码. 32bit. 4byte. 够用了但是很浪费

4. utf-8 可变长度的unicode

英文: 1byte

欧洲文字: 2byte

中文: 3byte

字节(byte)

1byte = 8bit

1kb = 1024byte

1mb = 1024kb

1gb = 1024mb

1tb = 1024gb

1pb = 1024tb

三.字符, 列表和元组

1. 基本数据类型概况

1, int 整数

2. str 字符串

3. bool 布尔值

4. list 列表. 一般存放大量的数据 ["门神xxxx", "风扇哥xxxx", 元素]

5. tuple 元组. 只读列表, 只能看啥也不能干. (元素, 元素)

6. dict 字典. {"风扇哥":"王伟哲", "wlh": "王力宏"}

7. set 集合 {"风扇哥", "wlh"}. 不重复

8. bytes 一堆字节. 最小数据单元

2. int类型的相关操作.

数字没办法执行其他操作. 操作只有+-*/, //, %, **

8bit => 1byte

bit_length() 二进制长度

3. bool类型的操作. 基本类型转换的问题

bool类型没有操作.

类型转换

结论一: 想把xxx转化成yy类型. yy(xxx)

结论二: 能够表示False的数据: 0, "", [], {}, set(), tuple(), None, False

4. str 认识字符串(重点, 多)

字符: 单一的文字符号

字符按照固定的顺序连成串

被' 或者" 或者''' 或者"""括起来的内容

索引 编号, 顺序

从0开始

切片

s[start:end:step]

start:开始

end: 结束 取不到

step: 步长, 控制方向. 每xx个取一个

一大波操作.

字符串是不可变的数据类型. 不论如何操作.对原来的字符串是不会有影响的

1, upper() 转换成大写. 忽略大小写

2, strip() 去掉左右两端的空白 空格, \t \n. 所有用户输入的内容都要去空白

3, replace(old, new) 把old替换成new

4, split() 字符串切割

5, startswith() 判断是否以xxx开头

6, find() 查找, 找不到返回-1

7, isdigit() 判断是否是数字组成

8, len() 求长度

for循环遍历字符串

for 变量 in 可迭代对象:

循环体

for c in s: # c: charactor(字符) s: string

print(c)

5. 什么是列表

定义: 能装对象的对象

在python中使用[]来描述列表, 内部元素用逗号隔开. 对数据类型没有要求

列表存在索引和切片. 和字符串是一样的.

6. 相关的增删改查操作(重点)

添加:

1. append() 追加

2. insert(位置, 元素) 插入指定元素到指定位置

删除:

1. pop(index) 根据索引删除

2. remove(元素) 根据元素删除

修改:

索引修改

lst[索引] = 元素

查询:

for循环.

7. 列表的嵌套

多个列表互相嵌套

8. 列表的其他操作

1. count() 计数

2. sort() 排序,升序 ; sort(reverse = True)降序

3. reverse() 翻转

4. len() 求长度

9. 什么是元组

能装对象的对象. 不可变. 一旦确认好. 不可更改

只读列表

可以迭代

10. 元组的嵌套

和列表一样.都可以互相嵌套.

元组的不可变: 指向不变

元组不可改,列表可以改

tu = ruple()  空元组,固定写法

当元组中只有一个元素时   tu = (1,)  要加","

tu = (1)  # 不是元组,

tu = (1,) # 是元组,

元组也是可迭代的,可以使用for循环

关于不可变, 注意: 这里元组的不可变的意思是子元素不可变. 而子元素内部的子元素是可以变, 这取决于子元素是否是可变对象.

11. range(重点, 难点)

数数

range() 可迭代对象

range(参数) [0, 参数)

range(参数1,参数2) [参数1, 参数2)

range(参数1,参数2,step) [参数1,参数2) 每隔step取一个

# 重点

for i in range(len(lst)):

i 索引

lst[i] 元素

print(i, lst[i])

四. 字典和集合

1. 什么是字典

字典是以key:value的形式来保存数据

用{}表示. 存储的是key:value

2. 字典的增删改查(重点)

1. 添加

dic[新key] = 值

setdefault()

2. 删除

pop(key)

3. 修改

dic[老key] = 值

update() 跟新字典

4. 查询

dic[key]

get(key, 值)

setdefault(key, value)

5. 遍历,字典是一个可迭代对象

3. 字典的相关操作

1. keys() 获取到所有的键

2. values() 获取到所有的值

3. items() 拿到所有的键值对

4. 字典的嵌套

字典的嵌套. 字典套字典

5. 集合(不重要). 去重复

集合中的元素是不重复的. 必须是可哈希的(不可变), 字典中的key

空集合:set()

空元组:tuple()

空列表:list()

非空集合: {123}集合, 集合其实就是不存value的字典

六.小数据池

1. 小数据池, id()

小数据池针对的是: int, str, bool

在py文件中几乎所有的字符串都会缓存.

id() 查看变量的内存地址

2. is和==的区别

is 比较的是内存地址

== 比较的是内容

当两个变量指向同一个对象的时候. is是True, ==也是True

3. 编码

1. ascii. 有: 数字, 字母, 特殊字符. 8bit 1byte 128 最前面是0

2. gbk. 包含: ascii, 中文(主要), 日文, 韩文, 繁体文字. 16bit, 2byte.

3. unicode. 包含gbk,ascii,big5... 32bit, 4byte

4. utf-8. 可变长度的unicode.

1. 英文: 8bit,1byte

2. 欧洲文字: 16bit 2byte

3. 中文: 24bit 3byte

不同的编码之间不能随意转换. 中国人gbk和德国人utf-8骂 想要沟通必须通过英文(unicode)(媒介)

在python3中. 默认的编码是unicode,我们的字符串就是unicode

在python2中. 默认的编码是ASCII. Cpython.c语言的默认编码是ASCII

unicode弊端:在存储和传输的时候. 是很浪费的

在存储和传输的时候不能直接使用unicode. 必须要对字符串进行编码. 编码成bytes类型

bytes: 字节形式的字符串

1. encode(编码格式) 编码

2. decode(编码格式) 解码

bytes是一种另类的字符串表示形式

"哈哈哈" => \xee\xab\x13\xee\xab\x13\xee\xab\x13

七. join,fromkeys和深浅拷贝

1.  join,fromkeys

join()

"*".join("马虎疼") # 马*虎*疼 把传递进去的参数进行迭代. 获取到的每个元素和前面的*进行拼接. 得到的是字符串

split() 切割. 切割的结果是列表

列表和字典: 都不能在循环的时候直接删除

把要删除的内容记录在新列表中然后循环这个新列表. 删除列表(字典)

fromkeys()

坑1: 返回新字典. 不会更改老字典

坑2: 当value是可变的数据类型. 各个key共享同一个可变的数据类型. 其中一个被改变了. 其他都跟着变

2. 深浅拷贝(重点, 难点)

1. = 没有创建新对象, 只是把内存地址进行了复制

2. 浅拷贝 lst.copy() 只拷贝第一层.

3. 深拷贝

import copy

copy.deepcopy() 会把对象内部的所有内容进行拷贝

八. 文件操作

1. 文件操作

open 打开

f = open(文件路径, mode="模式", encoding="编码格式") 最最底层操作的就是bytes

打开一个文件的时候获取到的是一个文件句柄.

绝对路径

从磁盘根目录开始寻找

相对路径

相对于当前程序所在的文件夹

../ 上一层文件

文件夹/ 进入xxx文件夹

2. mode:

打开文件的方式: r, w, a, r+, w+, a+, rb, wb, ab, r+b, w+b, a+b 默认使用的是r(只读)模式

r: 读取,只读.

读取文件的相关操作

1. read()

默认: 读取文件内容(全部)

read(n) 读取n个字符

2. readline() 读取一行

3. readlines() 读取全部. 返回列表

(最重要)4. for line in f: 每次读取一行内容

w:

写入. 只写

创建文件

会清空文件

a:

也可以创建文件

追加写

r+: 对于文件而言. 应该有的操作就两个:读, 写

读写操作

w+:

写读操作

a+:

追加写读

所有带b的表示直接操作的是bytes, 当处理非文本文件的时候.

rb

wb

ab: 断点续传

r+b

w+b

a+b

深坑请注意: 在r+模式下. 如果读取了内容. 不论读取内容多少. 光标显示的是多少. 再写入 或者操作文件的时候都是在结尾进行的操作.

3. 文件操作中关于文件句柄的相关操作

seek() 移动光标

f.seek(0) 移动到开头(最多)

f.seek(0, 2) 移动到末尾

seek:两个参数

1. 表示偏移量

2. 从xxx开始偏移, 默认0, 开头 1, 当前位置 2, 末尾

tell:

返回光标所在的位置

4. 文件修改, 实际操作(重点)

九. 初识函数

1. 什么是函数?

f(x) = x + 1

y = x + 1

函数是对功能或者动作的封装

2. 函数的语法和定义

def 函数名():

函数体

调用:

函数名()

3. 关于函数的返回值

return : 返回

1. 当程序没写过return, 不返回任何结果. 如果你非要接收. 接受到的是None

2. 当函数写return 值, 有一个返回值.

3. 当函数写了return 值1, 值2, 值3.... 返回多个结果. 多个结果打包成元组

4. 当程序执行到return, 函数结束执行

4. 函数的参数(部分)

小括号是什么, 小括号表示调用, 传参

什么是参数: 参数是给函数传递的信息

1.形参: 在函数声明的位置写的变量

1. 位置参数

2. 默认值

3. 动态传参 *, **

2.实参: 在函数调用的时候给函数传递的具体的值

1. 位置参数

2. 关键字参数

3. 混合: 位置, 关键字

3.传参: 把实参给形参的过程

4. 动态传参(重点) *, **

*, ** :

形参: 聚合

位置参数* -> 元组

关键字** -> 字典

实参: 打散

列表, 字符串, 元素 -> *

字典 -> **

形参顺序(重点):

位置, *args, 默认值, **kwargs

无敌传参

def func(*args, **kwargs): arguments参数 keyword-arguments关键字参数

pass

十.函数的进阶

1. 作用域和名称空间

名称空间: (用来存放名字(变量, 函数名, 类名, 引入的模块名)的)

1. 全局名称空间: 我们在py文件中自己写的变量, 函数.....

2. 内置名称空间: 我们python解释器提供好的一些内置内容(print, input....)

3. 局部名称空间: 在我们执行函数的时候.会产生一个局部名称空间. 放的是: 函数内部的内容(变量, 函数,类...)

名称空间可能会有无数个, 局部名称空间而言. 相对是独立的.一般互不干扰

作用域:

1. 全局作用域: 内置+全局

2. 局部作用域: 局部

globals() 查看全局作用域

locals() 查看当前作用域

2. 函数的嵌套

在函数中声明函数

在内部函数中使用变量的时候, 查找顺序: 先找自己 -> 上一层 -> 上一层..全局 -> 内置

3. nonlocal和global关键字(重点)

global: 在局部引入全局变量

nonlocal: 在局部...内层函数引入外层离他最近的那个变量.

十一. 第一类对象 闭包 迭代器

1.第一类对象-> 函数名 -> 变量名

函数对象对象可以像变量一样进行赋值

还可以作为列表的元素进行使用

可以作为返回值返回

可以作为参数进行传递

2.闭包 -> 函数的嵌套

内层函数对外层函数中的变量的使用

好处:

1. 保护变量不被侵害

2. 让一个变量常驻内存

如何通过代码查看一个闭包

__closure__: 有东西就是闭包. 没东西就不是闭包

3.迭代器 -> 固定的思路. for循环

一个数据类型中包含了__iter__函数表示这个数据是可迭代的

dir(数据): 返回这个数据可以执行的所有操作

判断迭代器和可迭代对象的方案(野路子)

__iter__            可迭代的

__iter__ __next__    迭代器

判断迭代器和可迭代对象的方案(官方)

from collections import Iterable, Iterator

isinstance(对象, Iterable) 是否是可迭代的

isinstance(对象, Iterator) 是否是迭代器

模拟for循环

lst= []

# 拿迭代器

it = lst.__iter__()

while 1:

try:

it.__next__()

except StopIteration:

break

特征:

1. 省内存(生成器)

2. 惰性机制

3. 只能向前. 不能后退

作用:统一了各种数据类型的遍历

十二. 生成器和各种推导式

1. 生成器

本质就是迭代器.

一个一个的创建对象

创建生成器的方式:

1. 生成器函数

2. 通过生成器表达式来获取生成器

3. 类型转换(看不到)

2. 生成器函数 (重点)

生成器函数中包含 yield , 返回数据和return差不多.

return会立即结束这个函数的执行

yield 可以分段的执行一个函数

生成器函数在执行的时候返回生成器. 而不是直接执行此函数

能向下执行的两个条件:

__next__() :执行到下一个yield

send() :执行到下一个yield, 给上一个yield位置传值

所有的生成器都是迭代器都可以直接使用for循环

都可以使用list()函数来获取到生成器内所有的数据

生成器中记录的是代码而不是函数的运行

def func():

print("我的天哪 ")

yield "宝宝"

gen = func() # 创建生成器. 此时运行会把生成器函数中的代码记录在内存

当执行到__next__(), 运行此空间中的代码, 运行到yield结束.

优点: 节省内存, 生成器本身就是代码. 几乎不占用内存

特点: 惰性机制, 只能向前. 不能反复

3. 各种推导式 (诡异)

列表推导式 [结果 for循环 if]

字典推导式 {结果(k:v) for循环 if}

集合推导式 {结果(k) for循环 if}

4. 生成器表达式 (重点)

(结果 for循环 if)

python少年_python简单入门相关推荐

  1. Python SQL 语法简单入门

    Python SQL 语法简单入门 大家好,今天给大家分享一些python中基本的sql语法.基本是按照sqlite3 来写的. 引题 为什么要使用数据库? 持久化 ,内存中的变量当程序重启和电脑断电 ...

  2. 学银在线python课程_Python 从入门到精通:一个月就够了!

    毫无疑问,Python 是当下最火的编程语言之一.对于许多未曾涉足计算机编程的领域「小白」来说,深入地掌握 Python 看似是一件十分困难的事.其实,只要掌握了科学的学习方法并制定了合理的学习计划, ...

  3. 怎么理解python语言_Python语言入门1-理解Python语言

    本文主要向大家介绍了Python语言入门的理解Python语言,通过具体的内容向大家展现,希望对大家学习Python语言入门有所帮助. python是解释型的脚本语言 解释型语言 与C/C++等编译型 ...

  4. 计算机python教程_Python 如何入门?附Python教程下载

    学习编程,有兴趣最好,小时候就开始捣鼓电脑.知识兔上有大量编程视频教程课程,都是精品课程,1080P超高清画质教学视频,精品之精品,找一套优秀Python课程教程或者找公众号超乎想象客服推荐一下,轻轻 ...

  5. python恢复_python机器学习入门恢复

    3步快速找回,让数据恢复变得简单 版权所有 1990-2020 B计划信息技术有限公司 python机器学习入门 python机器学习入门 Windows 10,Windows 7,Windows 8 ...

  6. 10分钟python爬虫_python scrapy 入门,10分钟完成一个爬虫

    在TensorFlow热起来之前,很多人学习python的原因是因为想写爬虫.的确,有着丰富第三方库的python很适合干这种工作. Scrapy是一个易学易用的爬虫框架,尽管因为互联网多变的复杂性仍 ...

  7. 推荐一部python教程_Python爬虫入门教程:博客园首页推荐博客排行的秘密

    1. 前言 虽然博客园注册已经有五年多了,但是最近才正式开始在这里写博客.(进了博客园才知道这里面个个都是人才,说话又好听,超喜欢这里...)但是由于写的内容都是软件测试相关,热度一直不是很高.看到首 ...

  8. python参数估计_python简单实现最大似然估计scipy库的使用详解

    python简单实现最大似然估计 1.scipy库的安装 wim+R输入cmd,然后cd到python的pip路径,即安装:pip install scipy即可 2.导入scipy库 from sc ...

  9. python ** 运算符_Python从入门到放弃运算符(2)

    摘要:上一篇Python从入门到放弃-运算符(1),讲了Python的运算符中的算术运算符.赋值运算符.比较(关系)运算符,这篇继续讲Python的运算符. 逻辑运算符 逻辑运算符是对真和假两种布尔值 ...

最新文章

  1. Eclipse + Spring boot +mybatis + mysql
  2. spring单元测试报错:Failed to load ApplicationContext 的解决方法
  3. 关于TCP/IP必须知道的几个基础问题
  4. 23种设计模式之桥梁模式
  5. 还看不懂同事的代码?Lambda 表达式、函数接口了解一下
  6. gnu java_【Java学习笔记】修饰符
  7. UOJ 7 NOI2014 购票
  8. 20211201:力扣第268周双周赛(上)
  9. 用Java来写常见的排序算法
  10. mysql n叉树_MySQL索引底层:B+树详解
  11. PKU 1273 Drainage Ditches
  12. 记住不要把Bitmap往List等集合放
  13. 锌离子荧光探针Zinquin 乙酯
  14. 下一代半导体表面清洁技术
  15. APS生产计划排产在装备制造业的应用
  16. mysql用update select批量处理数据
  17. c语言打印字母金字塔图形,C程序打印金字塔和图案
  18. HDU 6608 [2019 Multi-University Training Contest 3]
  19. 开关调色新世界BP2888电源解决方案
  20. python用turtle画月亮_使用python turtle画高达

热门文章

  1. 《Word中设置英文单词首字母不自动变为大写》
  2. Linux库的分文件编程
  3. 通俗易懂地解释贝叶斯网络及其应用
  4. ambari集群管理安装→ssh无密登录设置
  5. 非法作坊死猪拌入剧毒农药腌制腊肉公开销卖
  6. juniper 开放端口_Juniper EX4200 屏蔽指定端口笔记
  7. 咖啡加盟开店经营离不开的三点策略
  8. 富文本编辑器和图片压缩问题
  9. 云ERP服务商E店宝获上市公司和嘉资源1亿元C轮融资
  10. japan-movie-night-restraut