s12 day2 视频每节的内容
05 python s12 day2 python编码
1.第一句python代码
python 执行代码的过程
文件读到内存 分析内容 编译字节码 转换机器码 cpu调用
2.python解释器
执行时加python python hello.py
或者在文件头写入#/usr/bin/env python3.5
./hello.py
3.python的版本
cpy
jpy
pypy 这个和其他的不同之处,在于编译时先编译成字节码,转换成机器码是在编译时做的,执行时cpu直接调用机器码。
其他python是编译时,只编译成字节码,执行时先转换成机器码,然后cpu调用。所以pypy同其他版本的py,程序运行时要快。
4.python内容编码问题
字符编码的种类,8位表示1个字符 (8位一个字节)
asicii码 8位表示1个字符,可以表示256个字符
unicode 至少16位(至少2个字节) 表示一个字符
utf-8 是对unicode的 一个优化,如果字符属于以前ascii码表示的字符,都按照8位存,如果是欧洲一些字符用16位存(2个字节),汉字用24位存(3个字节)
06 python s12 day2 接收执行参数
1注释
单行注释
多行注释
2.执行脚本传入参数
使用sys模块
import sys
sys.argv
07 python s12 day2 Python字符串原理剖析
1.pyc文件
执行python代码时,如果导入了其他的.py文件,那么,执行过程中会自动生成一个与其同名的.pyc文件(字节码文件),该文件就是python解释器编译后的字节码文件。.pyc文件存在了,把原文件删掉了,程序也可以执行,因为python优先找.pyc文件,如果没找到先生成在执行。python内部有检测源文件与.pyc文件的一致性。
注释:代码经过编译可以产生字节吗;字节码通过反编译也可以得到代码
2.变量
变量命名
变量的作用
缓冲池:python内部有缓冲机制。减少内存负担
缓冲池:python中对数字和字符串的一个机制,当数字小于257时(大于或等于就超出了),多个变量引用这个数字时,python指引到一个内存块,当超过257时,python将不指向这个内存块。字符串同样有一个临界值。(这个值怎么定义的,不清楚。知道有临界就行。)
数字举例:
>>> id(i1)
140348026316520
>>> id(i2)
140348026316520
>>> i3 = 257
>>> i4 = 257
>>> id(i3)
140348026351544
>>> id(i4)
140348026351520
>>>
这个缓冲区的作用是提高内存的利用率和执行效率。i1 = 7 ,i2 = 7理论上需要分配到两块内存块中,python为了提高效率做了一个优化指向同一块内存,将一些常用类型的数据的值放到缓冲区,提供了这么一个缓冲机制。把python认为常用的放到缓冲池中。
3.输入输出
input()
#当我们输入密码时,不希望显示出来,可以导入python的getpass模块来实现
import getpass
pwd = getpass.getpass(“请输入您的密码:”)
print(pwd)
4.流程控制
if...else...
while
5.基本的数据类型
1)数字
int(整型)
long 长整型
float 浮点型
complex 复数 (基本用不到)
2)布尔值
真或假
1或0
3)字符串
字符串原理
08 python s12 day2 基本数据类型常用方法
字符串的3种格式化方法
万恶的+
字符串常用功能:
移除空白 .strip()
分割 str.split()
长度 len(str)
索引 str[0]
切片
4)列表
创建列表的2种方法:
a = [‘x’,’y']
a = list(('x','y’))
列表的常见方法:
索引
切片
追加 list.append()
删除 list.pop() list.remove() del
长度 len(str)
循环 for,while
continue;break;pass;return;exit(0,1,2..)
包含 x in list
5)元祖
元祖的元素不可修改,
(11,22,33)
(11,22,{’k1’:’v1'})
元祖的元素如果是一个字典,字典是可以修改,但不能删除
a = (11,22,{'k1':'v1’})
a[2]['k2'] = ‘v2’
a
(11, 22, {'k2': 'v2', 'k1': 'v1’})
其他的功能和列表一样
6)字典
创建字典的两种方式:
a = {‘k1’:’v1’,’k2’:’v2'}
a = dict(‘k1’=‘v1’,’k2’=‘v2’)
字典的常用方法:
索引 d[key]
新增 d[key] = xx
删除 del d[key]
键、值、键值对
keys values items
循环
for k,v in dic.items()
长度
6.运算符
09 python s12 day2 上周作业实例分析
直播里看过了,此节跳过
10 python s12 day2 Python主文件判断
1.主入口文件
使用文件的__name__ == ‘__main__’ 属性判断,如果不是主程序文件则显示 文件名是不带.py
11 python s12 day2 一切事物都是对象
1.类的简单介绍
1)对于python ,一切事物都是对象,对象基于类创建
创建对象,对象中有很多方法。创建对象时,并不是在对象中同时 创建了方法。而是实例化类时创建了对象,并告诉这个对象,你是我这个 类的儿子老子这里有很多功能,你记住这些功能集合的列表的内存地 址,回头就根据这个内存地址首先找到功能集合列表,根据集合的内容去 找里面的方法。
还可以这样理解:
类创建对象:创建了对象和给对象一个指引到类的指引标志。告诉类,如果用类的某些功能,通过这个指引标记找到类,类来执行。
2)python来说所有事物都是对象:
对象是基于类创建的
对象具有的所有的功能都是根据内存地址去类中找的。调用类里面的成员。
3)查看类的方法
type()方法查看类型
dir()查看有哪些方法
help()查看详细的方法
12 python s12 day2 int内部功能介绍
按照类的方式来看看数据类型
type()查看对象的类型
如果是内置的类,直接显示对象类型
如果是安装的外部包,查看对象类型显示的是那个类在什么位置
>>> from twisted.internet import reactor
>>> print type(reactor)
<class 'twisted.internet.selectreactor.SelectReactor'>
1.整数类 int
a = 18
bit_length()二进制位的长度s
a.__abs__()绝对值,因为是比较常用的功能,并且方法又是带下划线的,python就把这个功能放到内置函数里面里了。所以就有了abs()
abs(-19) abs()内部做两件事,先是拿到这个数字创建int对象,然后调用这个对象的.__abs__()
a.__add__() 同__abs__,而且python在语法堂中定义成1+1,内部就是拿前面一个数字创建对象,然后调用__add__()
a.__cmp__ 比较,python3.5里就没有了
a.__and__
a.__bool__
a.__divmod__这个有用,用于得到商和余数
>>> divmod(8,2)
(4, 0)
a.__eq__()是否相等
a.__flot__()转换成浮点型
a.__floordiv__()地板除,语法堂 5//6
>>> a.__floordiv__(6)
0
a.__ge__() 大于等于返回True,>=
a.__hash__()创建对象时有一个哈西值
13 python s12 day2 float和long内部功能介绍
2.flot浮点型和int类似
.as_integer_ratio 就这一个怪异的,把浮点型转化成最简比的分数比如0.5转成1/2
long长整型 和int类似的
14 python s12 day2 str内部功能介绍一
3.字符串
1)所有语言百分之八十都是对字符串和集合的操作
2)str的常用操作:
a = ‘eric’
使用dir(a)查看字符串有哪些成员。
这里我们首要关注成员里的方法
用到模块的时候用vars()不仅列出成员,成员值也列出来
a.__contains__(‘er’) 包含返回true 语法堂 ‘er’ in a
a.__eq__() 字符串的相等 语法堂 ==
__format__ 字符串的格式化,
>>>a = ‘eric{0}’
>>>a.__format__(‘alex’)
>>> a.format('alex’)
‘alexalex'
__getattribute__() 反射的时候会用到它,暂时到这这个方法
__getitem__() 类的时候用到。这个方法暂时到这 语法堂 str[0]
a.capitalize()首字符大写了
>>> a.capitalize()
‘Alex’
a.casefold() 将大写字符变小些
>>> a = 'alExV5'
>>> a.casefold()
‘alexv5'
a.center这个有用
>>> print(8*'*',a,8*'*')
******** alExV5 ********用center可以实现
>>> a.center(20)
' alExV5 ‘
>>> a.center(20,'*’)
'*******alExV5*******’
a.count(‘a')计算字符出现的次数。还可以定义起始位置和结束位置
a.count(‘a’,0,10) 从位置0到为止10统计
a.encode()将字符串转编码
>>> a = '李杰’
>>> a.encode('gbk’)
b'\xc0\xee\xbd\xdc'
a.endswith() 判断是不是以什么结尾的,如果是返回true,也可以加起始位置和结束位置,判断子序列是不是以什么结尾的
15 python s12 day2 str内部功能介绍二
a.expandtabs()将tabs转换成空格,默认情况下将一个tabs转换成8个空格
>>> a = 'a\tlex’
>>> a.expandtabs()
'a lex’
a.find() 找某个字符,返回这个字符的位置,可以设置找的起始位置和结束位置,如果找的字符不存在,返回-1
a.index() 也是找,和find的不同,找不到的时候直接抛出异常报错
a.format() 就是做字符串格式化的,内部调用__format__()
两种写法:
>>> a = "alex {0} as {1}”
>>> a.format('sb','eric’)
'alex sb as eric’
>>> a ="alex {name} as {id}”
>>> a.format(name='sb',id = 'eric’)
'alex sb as eric’
isalnum()是否是字母或者数字
isalpha()是否是字母
isdecimal()是否是10进制小数
isdigit()是否是数字
isidentifier()是否是关键字
islower()是否全部是小写
isnumeric()是否是数字
isprintable()是否可以打印,忽略
isspace()是否是空格
istitle()是否是标题,判断每一个字母首字母都是大写
isupper()是否全部是大写
‘’,join(list) 拼接
ljust() 和center功能相似,左对齐
rjust()
lower() 全部变成小写
lstrip()
maketrans()做一个对应表,和translate()结合使用,来做替换
translate()
>>> intab = 'abcde’
>>> outtab = ‘12345'
>>>trantab = ''.maketrans(intab,outtab)
>>> trantab
{97: 49, 98: 50, 99: 51, 100: 52, 101: 53}
>>> l_str = 'this is a ,that is bc'
>>> l_str.translate(trantab)
'this is 1 ,th1t is 23'
partition() 做分割,把字符串分割成3部分
>>> a = 'alexissb’
>>> a.partition('is’)
('alex', 'is', 'sb’)
replace()替换
replace(‘old’,’new’,个数)
rfind()从右向左找
split()
splitlines()根据行分割,没有它用split(‘\n')也能实现
strip()
startswith()以什么开头
swapcase() 大小写转换
title() 将字符串中所有的字母的首字母大写
upper() 大写
zfill()
16 python s12 day2 上下文管理剖析
2.with的用法
with open(‘h.log’,’r’) as f_read:
f_readlines
with 的意思是执行完后继续调用函数,原理如下:下面的语句不能执 行 哦,只是原理展示
def f():
print(‘11111’) 1.先打印1111
yield 2.碰到 yield了,记录函数的位置,并跳出函数
print(‘333333’) 4.with语句块执行完后在打印这个
with f():
print(‘我插一杠子’) 3.紧接着打印这句
17 python s12 day2 list内部功能介绍
3.列表
1)列表的2种构建方式:
li = list([1,2])
li = [1,2,3]
2)列表的常用方法:
append() 尾部添加
clear() 把列表清空
copy() 拷贝浅拷贝
count() 判断元素出现的次数
extend() 扩展一个列表,参数可以是列表也可以是元组
大家以后再写列表或者元组的时候一定在最后加一个逗号[1,2,3,] (1,2,3,)
index() 查找返回下标,找不到抛异常,可以加查找起始位置 和结束位置
insert() 插入指定位置,insert(0,’sb’)
pop() 参数为下标位置,移除并返回元素值,下标位置不存在 时抛出异常,报错,
remove() 参数为元素值,移除,不返回元素值,只返回执行状态,当参数 值不存在时,抛出异常
reverse()反转,列表反转。
sort() 按字符编码排序
18 python s12 day2 tuple和dict内部功能介绍
4.元组
1)元组的2种创建方式
t1 = (1,2,)
t1 = tuple((1,2)) 或 tuple([1,2])
2)元组的常用方法:
(略)
19 python s12 day2 字典和列表课上练习题
5.字典
1)字典的2种创建方式
a = {‘k1’,’v1’}
a = dict(k1= 'v1’)
2)字典的常用方法:
clear()清空
copy() 浅拷贝
fromkeys()
>>> a = a.fromkeys(['k1','k2'],'v1')
>>> a
{'k2': 'v1', 'k1': 'v1’}
get()方法获得值,如果参数key不存在,返回空值
a.values()
a.keys()
a.items()
a.pop()删除,参数key,删除并获得value
a.popitem() 删除随机删除键值对,没用
setdefault(k,v) 两个参数,如果k键存在,则返回值,如果不存在将加入字典,并且值为’v’
update()
完结!!!
- python2.0 s12 day4
python2.0 s12 day404 python s12 day4 TengLan回顾上节内容 05 python s12 day4 迭代器原理及使用 本节大纲介绍: 1.迭代器&生成器 ...
- python2.0 s12 day3
s12 day3 视频每节的内容 03 python s12 day3 本节内容概要 第三天的主要内容 上节没讲完的: 6.集合 7.collections 1)计数器 2)有序字典 3)默认字典 4 ...
- python2.0 s12 day8 _ 堡垒机前戏paramiko模块
堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 paramiko模块是做主机管理的,他模拟了一个ssh. 有两种形式连接形式, ...
- python2.0 s12 day8 _ python线程&python进程
1.进程.与线程区别2.cpu运行原理3.python GIL全局解释器锁4.线程 1.语法 2.join 3.线程锁之Lock\Rlock\信号量 4.将线程变为守护进程 5.Event事件 6.q ...
- python2.0 s12 day8 _ socketserver学习
Socket 概念 一个socket就是一个点对点的链接.当今,大多数的通信都是基于Internet Protocl,因此大多数的网络Socket都是Internet Protocl(互联网)的通信( ...
- python2.0 s12 day7
开发的第二阶段 网络编程阶段 之所以叫网络编程,是因为,这里面就不是你在一台机器中玩了.多台机器,CS架构.即客户端和服务器端通过网络进行通信的编程了. 首先想实现网络的通信,你得先学网络通信的一个基 ...
- python s12 day2
python s12 day2 入门知识拾遗 http://www.cnblogs.com/wupeiqi/articles/4906230.html 基本数据类型 注:查看对象相关成员 var, ...
- Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项(转)
Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项 参考:https://blog.csdn.net/weixin_40475396/article/detail ...
- python3.0与python2.0有哪些不同
python3的语法跟python2哪里变了. 1. python3中1/2终于等于0.5 了 2. print "Hello World"变成了print("Hello ...
随机推荐
- Ribbon的配置
1.注解配置 @RibbonClient(name = "xxx",configuration = XxxRibbonConfig.class) public class XxxR ...
- 原声js实现addClass removeClass toggleClass效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 大数据之ETL工具Kettle的--1功能介绍
Kettle是一款国外开源的ETL工具,纯java编写,可以在Window.Linux.Unix上运行. 说白了就是,很有必要去理解一般ETL工具必备的特性和功能,这样才更好的掌握Kettle的使用. ...
- 【ExtJS】各种获取元素组件方法
1.get().getDom().getCmp().getBody().getDoc(): get(id/obj): get方法用来得到一个Ext元素,也就是类型为Ext.Element的对象, Ex ...
- 【C#】Queue的简单试用
新建一个WPF项目,测试C#的Queue类的简单使用. 前台准备两个按钮 MainWindow.xaml <StackPanel VerticalAlignment="Center&q ...
- 【C#】List<T>对象的深复制
一.List对象中的T是值类型的情况(int 类型等) 对于值类型的List直接用以下方法就可以复制: List<T> oldList = new List<T>(); old ...
- Java获取web项目路径
File f = new File(WebPath.class.getResource("/").getPath()); String path = f.getParentFile ...
- linux 使用NSF 映射远程磁盘目录
假设源目录在192.168.1.1机器上,目录为/data 客户端集群在192.168.1.2, 需要将192.168.1.1机器上的/data目录到本地的/data目录 1.在两台机器上安装nsf ...
- MS-SQL 删除数据库所有的表
godeclare @tbname varchar(250)declare #tb cursor for select name from sysobjects where objectpropert ...
- 开源图形数据库Neo4j介绍与安装
图形数据库是以图形结构形式存储数据的数据库. https://neo4j.com/ Java 编写 保存为节点以及节点之间的关系 Neo4j 的数据由下面几部分构成: 节点 边 属性 无论是顶点还是边 ...