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执 ...
随机推荐
- Spring+Mybatis 复杂的分组查询
1.需要的结果数据格式为 { "responseCode": "0000", "responseMsg": null, "data ...
- Asp.net MVC WebApi项目的自动接口文档及测试功能打开方法
https://blog.csdn.net/foren_whb/article/details/78866133
- 2种方式解决vue路由跳转未匹配相应路由避免出现空白页面或者指定404页面
https://www.cnblogs.com/goloving/p/9254084.html https://www.cnblogs.com/goloving/p/9254084.html 1.路由 ...
- 【Linux】Mac PD set centos static ip
2,修改Centos的网络设置. (1)进入脚本. vi /etc/sysconfig/network-scripts/ifcfg-eth0 My Mac ip: # 从dhcp改成static BO ...
- 【Pattern】-NO.150.Pattern.1 -【Pattern UML】
Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of ...
- 【LeetCode每天一题】Rotate List(旋转链表)
Given a linked list, rotate the list to the right by k places, where k is non-negative. Example 1: I ...
- JMeter-生成性能测试结果报告
1.将jmeter添加至环境变量,验证环境是否配置完毕: 终端输入jmeter,如果返回如下信息并启动jmeter说明环境已配置好了 2.修改配置文件 查找“Results file configur ...
- principal(括号匹配+多组查询)
题目传送门: 把所有括号相匹配的段直接预处理出来就行了 #include <bits/stdc++.h> using namespace std; #define ll long long ...
- python迭代-如何使用生成器函数实现可迭代对象
如何使用生成器函数实现可迭代对象 问题举例: 实现一个可迭代对象的类,它能迭代出给定范围内 的所有素数: pn = PrimeNumbers(1, 30) for x in pn: print(x) ...
- REDHAT YUM本地源的搭建和使用
yum源一般分为两种,本地yum源和本地网络yum源,前者是通过文件提供安装包,后者是通过网络下载安装包: 由于Redhat7.3的yum源需要注册付费,所以往往会出现下载yum源安装包失败,如下图: ...