Bigger-Mai 养成计划,Python基础巩固二
模块初识
1.标准库
2.第三方库
import sys
sys.path #自己的本文件名不可为sys.py
#输出模块存储的环境变量
sys.argv #打印脚本的相对路径
sys.argv[2] #取第二个参数
import os#与系统交互的模块
os.system("dir")#windows下打印路径下文件
#直接输出到屏幕,不保存结果,返回值为0.表示执行成功
os.popen("dir").read()#不read()不保存结果,保存地址。
os.mkdir("new_dir")#执行新建文件夹的命令
个人自建模块导入:(1)copy到site-package下
(2)在环境变量中添加新建模块的路径
pyc是什么,python会不会编译,是不是一个纯粹的解释型语言
编译型语音:先通过编译器对程序执行一个编译的过程,把程序转变为机器语言,运行是不需要翻译,直接执行。最典型的就是C语言
解释型语言:没有编译的过程,而是在运行的时候通过解释器逐行解释,然后直接运行,最典型的就是Ruby。
解释型和编译型的优缺点:编译型语言之前就编译好了,所以效率比较高。
有一些解释型语言通过解释器的优化,而在效率上超过编译型语言
所以不能纯粹的分为编译型和解释型
java是通过编译器编译成字节码文件,然后运行时通过解释器解释成机器文件,所以Java是先编译后解释的文件。
简述python的运行过程
在说这个问题之前,我们先来说两个概念,PyCodeObject和pyc文件。
我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器真正编译成的结果。我们先简单知道就可以了,继续向下看。
当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。
当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。
所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。
我们可以从中学到什么?
A. 其实Python是否保存成pyc文件和我们在设计缓存系统时是一样的,我们可以仔细想想,到底什么是值得扔在缓存里的,什么是不值得扔在缓存里的。
B. 在跑一个耗时的Python脚本时,我们如何能够稍微压榨一些程序的运行时间,就是将模块从主模块分开。(虽然往往这都不是瓶颈)
C. 在设计一个软件系统时,重用和非重用的东西是不是也应该分开来对待,这是软件设计原则的重要部分。
D. 在设计缓存系统(或者其他系统)时,我们如何来避免程序的过期,其实Python的解释器也为我们提供了一个特别常见而且有效的解决方案。
基础入门拾遗
一、三元运算
result = 值1 if 条件 else 值2
如果条件为真:result = 值1
如果条件为假:result = 值2
数据类型
一、bytes
文本都是Unicode,二进制数据都是bytes,python3中数据传输都是二进制
>>'&12'.encode('utf-8')#字符串解码成二进制utf-8
>>b'\xe2\x82\xac20'
>>b'\xe2\x82\xac20'.decode('utf-8')#二进制编码为字符串编码
>>'&12'
二、list
切片
list['0','1','2','3']
list[:1] = ['0']
list[-3:-1] = ['1','2']#负数从左往右数
增删改
list.append('4')#增加到最后
list.insert(1,'insert')#插入到1前面
list.remove('1')
del list[1]
list.pop()#删除最后一个,并返回最后一个的值
list[list.index("1")]#寻找1的位置,并取值
list.count("1")#统计列表中有几个1
list.clear()#清空列表
list.reverse() #反转列表
list.sort()#排序,按ASCII排序
list.extend(list2)#扩展合并两个列表
list2 = list.copy()#重点讲解
print(list)#['0','1','2','3']
print(list2)#['0','1','2','3']
list[1] = 'nwa_1'
print(list)#['0','new_1','2','3']
print(list2)#['0','1','2','3']
list = ['0','1','2',['a','b','c'],'3']
list2.copy()
list = ['0','1','new_2',['new_a','b','c'],'3']
print(list)#['0','1','new_2',['new_a','b','c'],'3']
print(list2)#['0','1','2',['new_a','b','c'],'3']
list.deepcopy(list2)#深度copy 这样就复制成完全独立的两份了
第一种浅copy:list1 = copy.copy(list)
第二种浅copy:list1 = list[:]
第三种浅copy:list1 = list(list)
元组一旦创建不可修改,相当于一个只读的列表,它的方法只有两个count(),index()
字符串操作
name = 'maiwenao'
name.capitalize() #首字母大写
name.count(sub,start,end)#统计从哪到哪有多少个sub
name.center(50,'-')#需要打印50个字符,name放中间,不够‘-’来补
name.encode()#字符串转化成二进制
name.endswith()#字符串以什么结尾,比如判断邮件地址结尾是不是.com
name.expandtans(tabsize=30)#转化出多少个空格
name[name.find("m")]#查找'm'在字符串中的位置
name.format()#格式化对应
name.index()#位置
name.isalnum()#判断是不是阿拉伯数字+字母
name.isalpha()#判断是不是纯英文字符
name.isdecimal()#判断是不是十进制
name.isdigit()#判断是不是一个整数
name.isidentifier()#判断是不是一个合法的标识符
name.islower()#判断是不是小写
name.isnumber() #判断是不是数字
name.isspease()#判断是不是空格
name.istitle()#判断是不是首字母大写
name.printable()#判断是不是可以输出的
name.isupper()#判断是不是大写
name.join(['+','1','2','3','4','5'])#print(1+2+3+4+5)
name.ljust(50,'*')#长度50,不过*补在右边
name.rjust(50,'*')#与上面相反
name.lower()#大写变成小写
name.upper()#小写边大写
name.lstrip()#去除右边的空格回车
name.rstrip()#与上面相反
name.strip()#左右都去除
p = str.maketrans('asdfgh','123456')
print("mwaaaa".translate(p))#根据上面自定义规则一一对应替换,可用于加密
name.replace(old,new,count)#replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
name.rfind()#寻找最右边的那个字符
name.lfind()#与上面相反
print(1+2+3+4,stlit('+'))#['1','2','3','4']
name.swapcase()#所有字母大小写反转
name.zfill()
字典操作方法
dicts["key"] = "value"
#del
del dicts[key]
dicts.pop(key)
dicts.popitem()#随机删除
#find
key in dicts #返回true or false
dicts.get(key)#return value
dicts[key]#这样查找如果为空会报错,get不会报错,不存在只会返回none
dicts.update(dicts2)#相当于合并两个字典
dicts.items()#字典转成元组
d = dict.fromkeys([1,2,3],'key1','key2','key3')#通过一个列表生成默认dict
for i in dicts:
key = i
dicts[i]
for k,v in dicts.item():
print(k,v)
#数据量大的话效率就很低
Bigger-Mai 养成计划,Python基础巩固二的更多相关文章
- Python 基础语法(二)
Python 基础语法(二) --------------------------------------------接 Python 基础语法(一) ------------------------ ...
- python基础知识(二)
python基础知识(二) 字符串格式化 格式: % 类型 ---- > ' %类型 ' %(数据) %s 字符串 print(' %s is boy'%('tom')) ----> ...
- Python基础学习二
Python基础学习二 1.编码 utf-8编码:自动将英文保存为1个字符,中文3个字符.ASCll编码被囊括在内. unicode:将所有字符保存为2给字符,容纳了世界上所有的编码. 2.字符串内置 ...
- Python之路:Python 基础(二)
一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. if 1==1: name = 'lenliu' print name 下面的结论对吗?(对) 外层变量,可以被 ...
- Python基础篇(二)_基本数据类型
Python基础篇——基本数据类型 数字类型:整数类型.浮点数类型.复数类型 整数类型:4种进制表示形式:十进制.二进制.八进制.十六进制,默认采用十进制,其他进制需要增加引导符号 进制种类 引导符号 ...
- python基础(二)-------数据类型
python开发基础篇(二)数据类型 python数据类型有: 1.数字 1.只能存放一个值 2.一经定义,不可更改 3.直接访问 主要的分类为:整型,长整型,(python2有长整型的概念Pytho ...
- 第八章:Python基础の面向对象(二)
本課主題 面向对象的多态 面向对象的成员 成员修饰符 特殊成员 面向对象其他应用 异常处理 设计模式与单例模式 面向对象的多态 指定参数类型只是多态的一种表现 另外一种是允许自己类型和自己的子类型(典 ...
- Python 基础【二】 上
一.python语言分类 1. C python c语言的python版本 官方推荐 使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行 ...
- python基础介绍二
一.python种类 1.1 Cpython python官方版本,使用c语言实现,运行机制:先编译,py(源码文件)->pyc(字节码文件),最终执行时先将字节码转换成机器码,然后交给cpu执 ...
随机推荐
- 你应当如何学习C++以及编程(细节是必要的,但不是重要的,把时间用在集中精力去解决问题,而不是学习新技术,那样练不成高手。在实践中提高才是最重要的。最最重要的内功还是长期学习所磨练出来的自学能力)good
最近在学习Qt但由于没有C++的基础,感觉学的很吃力.看到pongba的这篇文章感觉不错就弄过来了, 原文地址:http://blog.csdn.net/qter_wd007/article/deta ...
- c++ STL概述
2018-09-26 c++ STL(标准模板库)是一套通过c++模板类实现的标准类库,提供了通用的模板和函数,功能强大,大大的提高了c++的开发效率. c++ STL的核心主要包括三个组件:(1)容 ...
- nfs 共享目录
依赖的包 yum -y install nfs-utils vim /etc/exports /data/test_nfs 10.125.37.12/16(rw,sync,no_root_squash ...
- python之进程,线程,协程简单理解
进程:资源单位,由操作系统控制调度.正在执行的一个程序或者过程,进程之间不共享资源,进程间通讯手段:管道,队列,信号量等.多用于计算密集型场景,如金融计算 线程:是cpu的最小执行单位,由操作系统控制 ...
- mysql千万级大数据SQL查询优化30条经验
转自http://blog.163.com/zhangjie_0303/blog/static/9908270620146951355834/ 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 w ...
- 扎实学Java之数组与方法
什么是数组? 数组是一个容器,用来存储多个数据(数据类型相同) 声明一个数组就是在内存中开辟一串连续的空间 数组的结构和基本要素 标识符:数组的名称,用于区分不同的数组 数组元素:向数组中存放的数据 ...
- Linux 7.x 防火墙&端口
Linux 7.x 防火墙&端口 查看当前防火墙的状态: # firewall-cmd --state 也可以使用指令:systemctl status firewall.service 启动 ...
- python3.*的一些笔记
因为使用python越来越频繁,有一些细节的东西经常用后一段时间没去用就会忘记,做些简单的笔记吧. 1.break和continue和pass a = 0 while 1: a+=1 if(a%3== ...
- 【转载】SVN使用教程总结
SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应的版本. Subversion是什么? ...
- ABP 2.0.2 升到 2.2.1
1.选择解决方案 右键 管理 nuget 更新 输入abp 这里只升级 abp的包 点升级 2.update-database 可能需要你添加个迁移(这一步可能不需要) 3.Core 项目下面的Au ...