个人学习总结:

python 第二课

解释型和编译型语言
计算机是不能够识别高级语言的,当我们运行一个高级语言的时候,需要将高级语言
翻译成计算机能够读懂的机器语言。这个过程分为两类,一个是编译,一个是解释。

编译型语言在程序执行之前,先通过编译器对程序执行一个编译的过程,把程序转变
为机器语言。运行时就不需要翻译,而直接执行就可以了,最典型的例子就是C语言。

解释型语言就没有这个编译的过程,而是在程序运行的时候,通过解释器对程序逐行
做出解释,然后直接运行。

编译型和解释型语言的优缺点:
编译型语言在程序运行之前就已经对程序做出了翻译,所以在运行时就少掉了翻译的
过程,所以效率比较高。但是不可一概而论,一些解释型语言也可以通过解释器的优
化对程序做出翻译时对整个程序做出优化,从而在效率上超过编译型语言。

随着JAVA等基于虚拟机的语言的兴起,我们又不能把语言纯粹的分成解释型和翻译性这两种。

Java首先是通过编译器编译成字节码文件,然后在运行时通过解释器解释成为机器文件,
所以Java是一种先编译后解释的语言。

Python的执行过程:
在硬盘上看到的pyc文件是python编译之后的文件,其实PyCodeObject则是python
编译器真正编译成的结果。

当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当python
程序运行结束时,python解释器则将PyCodeObject写会到pyc中。
s
当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到则直接载入,
否则就重复上面的过程。

则pyc文件其实是PyCodeObject的一种持久化保存方式。

python3的bytes/str区别
python3中严格区分了二者。python3中网络编程中传输数据都是以二进制传输。
encode decode
string------>bytes------->string 使用(encode/decode)二者进行转化

Program实例
# 字符串转化

msg = "字符串"

print(msg) # 字符串

msg01 = msg.encode(encoding = "utf-8") # 转化为二进制

print(msg01) # b'\xe5\xad\x97\xe7\xac\xa6\xe4\xb8\xb2'

print(msg01.decode(encoding = "utf-8")) # 字符串

模块初识

Program01
import sys

print(sys.path) # 打印环境变量

print("\t")

print(sys.argv) # 打印相对路径

# 注:在pycharm中显示的是绝对路径,在dos中显示的是相对路径
# print(sys.argv[2]) # 打开列表中的第二个单元

Program02

import os

cmd_res01 = os.system("dir") # 执行命令,不保存结果,仅仅显示,
#但是返回值是0 ,此处0代表没有出错,非0代表出错

cmd_res02 = os.popen("dir") # 执行命名,结果是内存的对象地址

cmd_res03 = os.popen("dir").read() # 将上述地址转化为中文

print("--->",cmd_res01)
print("--->",cmd_res02)
print("--->",cmd_res03)

os.mkdir("new_dir") # 在该文件下新建一个目录名称是New_dir

Program03

print(type(2**30)) # <class 'int'>

print(type(2**31)) # <class 'int'>

print(type(2**32)) # <class 'int'>

print(type(2**63)) # <class 'int'>

print(type(2**64)) # <class 'int'>

print(type(2**164)) # <class 'int'>

# 复数

a = 2 + 9j

b = 3 - 5j

print(a+b) # (5+4j)

print(52.3E9) # 52.3 * 10**9

Program04
# 三目运算符
a, b, c = 1,3,5

c = a if a>b else b

print(c) # c = 3

c = a if a<b else b

print(c) # c = 1

认识并使用元组和列表

#------元组内容的查找------

cell = ["AA","BB","CC"]

print(cell[0],cell[2])

# 包括开头,不包括结束位置
print(cell[0:2]) # ['AA', 'BB']

print(cell[0:3]) # ['AA', 'BB', 'CC']

print(cell[:3]) # 同上 0 是可以忽略掉的

print(cell[1:2]) # ['BB']

# print(cell[3]) # error 元组中不包含第4个元素

print(cell[-1]) # 取最后一个元素

print(cell[-3:-1]) # 从后向前取(结果正向),因为-1 代表最后一个元素,

# AA BB CC 且python顾头不顾尾,读取-3 不包括-1
# -3 -2 -1
# 输出结果是 ['AA', 'BB']

print(cell[-2:]) # 输出最后两个值 ['BB', 'CC']

#------元组内容的增加------

cell_add = cell

cell_add.append("dd") # 队尾追加
cell_add.append("dd") # 队尾追加
cell_add.append("ee") # 队尾追加
cell_add.append("aa") # 队尾追加

print(cell_add) # ['AA', 'BB', 'CC', 'dd']

cell_add.insert(1,"ee") # 自定义位置插入

print(cell_add) # ['AA', 'ee', 'BB', 'CC', 'dd']

#------替换元组的内容------

cell_add[2] = "ff"

print(cell_add) # ['AA', 'ee', 'ff', 'CC', 'dd']

#------查找目标元素的位置------

print("AA 的位置",cell_add.index("AA"))

# print("gg 的位置",cell_add.index("gg")) # error

#------计算目标元素在元组出现的次数------

print("dd出现的次数",cell_add.count("dd")) # dd出现的次数 2

#------将整个元组反转------

print(cell_add) # ['AA', 'ee', 'ff', 'CC', 'dd', 'dd', 'ee', 'aa']

cell_add.reverse()

print(cell_add) # ['aa', 'ee', 'dd', 'dd', 'CC', 'ff', 'ee', 'AA']

#------排序------

cell_add.sort()

print("排序之后的列表",cell_add)
# 排序之后的列表 ['AA', 'CC', 'aa', 'dd', 'dd', 'ee', 'ee', 'ff']

#------合并两个元组------

cell_bc = ["1","2","3"]

cell_add.extend(cell_bc)

print("合并之后的元组:",cell_add)

# 合并之后的元组: ['AA', 'CC', 'aa', 'dd', 'dd', 'ee', 'ee', 'ff', '1', '2', '3']

# 将已经合并的cell_bc删除

cell_bc.remove() # 或者 del cell_bc

cell_add.sort()

print("排序之后的列表",cell_add)

# 排序之后的列表 ['1', '2', '3', 'AA', 'CC', 'aa', 'dd', 'dd', 'ee', 'ee', 'ff']

#------删除元组的内容------

cell_add.remove("AA") # 方法一

print(cell_add) # ['ee', 'ff', 'CC', 'dd']

# cell_add.remove(1) # error 不能删除数字

del cell_add[2] # 方法二

print(cell_add) # ['ee', 'ff', 'dd']

cell_add.pop() # 方法三
# 当pop()无参数的话 默认删除最后一个
# 当pop()有参数的话 删除指定位置的值
print(cell_add) # ['ee', 'ff'] 删除了最后一个

cell_add.pop(0) # 删除了第一个值

print(cell_add) # ['ff']

#------删除全部的列表内容------

cell_add.clear()

print(cell_add)

# 测试如何动态读取元组的大小

cell = ["1","2","3","4","5","6"]

print(len(cell)) # 输出结果是6

进阶版的复制 深浅复制
cell = ["AA","BB","CC",["123","234"],"DD","EE"]

#------此处复制之后更改cell或者msg的内容二者都会发生变化
msg = cell # 此方法共用一块内存

#------此处复制完之后更改母本元组最表层的元素不会更改temp的值
#------更改子元组的值也不会对母元组的值产生影响
#------但是更改母本元组非最表层的元素确实会更改temp的值
temp = cell.copy() # 此方法称为浅复制,表层复制一份,深层仅复制地址

#------深复制 完完全全复制独立的一份,不推荐,太占用内存
import copy
name = copy.deepcopy(cell)

#------切片读取

print("cell间隔打印",cell[::2]) # 0 和 -1 可以省略
# 等同于 cell[0:-1:2]

#------利用循环复制一份,也是同浅复制,仅表层独立,深层是指针复制
call = [] # 先定义一个空的元组
for i in cell:
call.append(i)
print("call",call)

print("msg",msg)
print("temp",temp)
print("cell",cell)
print("name",name)


cell[1] = "888"
msg[2] = "666"
cell[3][0] = "呵呵"
temp[2] = "嘻嘻"

print("msg",msg)
print("temp",temp)
print("cell",cell)
print("name",name)

print("call",call)

MYK
2018年2月11日

Python个人总结_02的更多相关文章

  1. 02.python基础知识_02

    数据类型 1.整型 2.布尔值 3.字符串 4.列表 5.字典 6.集合 1.int(整型) i = 2 print(type(i)) 输出:<class 'int'> 2.bool(布尔 ...

  2. Python学习笔记_02:使用Tkinter连接MySQL数据库实现登陆注册功能

    1 环境搭建 1.1 Python安装 1.2 MySQL环境搭建 1.3安装MySQLdb  2 具体实现 2.1 登陆界面 2.2 注册界面 2.3 具体实现部分代码   1 环境搭建 1.1 P ...

  3. nginx+python+windows 开始_02

    接上文:http://www.cnblogs.com/tacyeh/p/4790112.html 一.改造helloWorld.py import web urls = ('/', 'Home', ' ...

  4. 我的python学习记_02

    流程控制 算术运算符: + 加(在字符串中拼接作用) - 减 * 乘 / 除 // 商 % 取余 ** 次幂 比较运算符: > 是否大于 >= 是否大于等于 < 是否小于 != 是否 ...

  5. python练习题_02

    #1.有两个列表 l1=[11,22,33] l2=[22,33,44] #a.获取内容相同的元素列表 l3=[] for i in l1: if i in l2: l3.append(i) prin ...

  6. Python说文解字_Python之多任务_02

    第三部分:Semaphore控制进入数量的锁 有时候可能需要运行多个工作线程同时访问一个资源,但要限制总数.例如,连接池支持同时连接,但是数目可能是固定的,或者一个网络应用可能支持固定数据的并发下载. ...

  7. Python基础学习笔记_02

    Python中的运算符 标准算术运算符 加(+) 减(-) 乘(*) 除(/) 整除(//) print(1+1) #加法运算 print(1-1) #减法运算 print(2*4) #乘法运算 pr ...

  8. python基础全部知识点整理,超级全(20万字+)

    目录 Python编程语言简介 https://www.cnblogs.com/hany-postq473111315/p/12256134.html Python环境搭建及中文编码 https:// ...

  9. Python中的多进程与多线程(一)

    一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...

随机推荐

  1. 【开发技术】storyboard和nib的差别

    在使用Storyboard管理的iOS应用中,它的组成部分为AppDelegate和ViewController这两个类以及MainStoryboard.storyboard文件组成.Storyboa ...

  2. 2017-07-09(tar who last)

    tar gzip ,bzip2对于文件目录压缩支持有限,所以出现了tar命令 tar [选项]  打包文件名  源文件 -c 打包 -v 显示过程 -f 指定打包文件名 -x 解包 -z 压缩成.ta ...

  3. 什么是bgp线路

    https://www.douban.com/note/319956581/ BGP(边界网关协议)主要用于互联网AS(自治系统)之间的互联,BGP的最主要功能在于控制路由的传播和选择最好的路由.中国 ...

  4. Centos 7 安装 memcached

    一.准备工作: 安装之前确保你的系统上已经安装libevent和telnet· 1.测试是否安装telnet: # rpm -qa |grep telnet 如果显示结果为: telnet-0.17- ...

  5. 通俗易懂的分析如何用Python实现一只小爬虫,爬取拉勾网的职位信息

    源代码:https://github.com/nnngu/LagouSpider 效果预览 思路 1.首先我们打开拉勾网,并搜索"java",显示出来的职位信息就是我们的目标. 2 ...

  6. 安装node.js和npm

    转载自https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/0014345014184 ...

  7. 【转】TCHAR

    TCHAR 就是当你的字符设置为什么就是什么例如: 当程序编译为    ANSI,    TCHAR 相当于 CHAR当程序编译为 UNICODE, TCHAR 相当于WCHAR char       ...

  8. 认识python中的set集合及其用法

    python中,集合(set)是一个无序排列,可哈希, 支持集合关系测试,不支持索引和切片操作,没有特定语法格式, 只能通过工厂函数创建.集合里不会出现两个相同的元素, 所以集合常用来对字符串或元组或 ...

  9. 为什么说http协议是无状态的?

    首先了解基本概念:什么是无状态,什么是无连接 无状态协议: 协议的状态是指下一次传输可以“记住”这次传输信息的能力. http是不会为了下一次连接而维护这次连接所传输的信息,为了保证服务器内存. 比如 ...

  10. java HotSpot 内存管理白皮书

    原文见:http://www.open-open.com/lib/view/open1381034220705.html.查阅资料后,对原文做了补充. 文中关于JVM的介绍基于JDK1.6的Hotsp ...