python合道-常规笔记

“人生苦短,我用Python”(” Life is short, you need Python”)

从最开始接触c,c++,VB,SQL,asp,c# ,Java,JS, Android到python。在编程的路上摸爬滚打了好久。最近项目中使用python较多,因此将自己使用感受与大家分享,通过与大家的交流互动进而对python进行更深层次的了解应用。

0x00.python基本介绍

python官网
anaconda官网
pycharm
vscode

环境安装:官网下载安装包安装。建议安装anaconda,在anaconda集成环境中安装各个工具。

0x01.变量及数据类型

  • 数据类型

Python有五个标准的数据类型:Numbers数字,String字符串,List列表,Tuple元祖,Dict字典

Numbers数字分为:int整型,long长整型,float浮点型,complex复数

  复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
   注:Python中存在小数字池:-5 ~ 257

String字符串:由数字、字母、下划线组成的一串字符,用于表示文本的数据类型
bool布尔型:True,False,用于做判断
List列表,支持字符,数字,字符串以包含列表(即嵌套),用[]标识,有序对象
Tuple元祖,用()标识,不能二次赋值,可以理解成不可变的列表(只读列表),有序对象
Dict字典:用{}标识,由索引(key)和它对应的值value组成,无序对象

数据类型转换方法: 常用的就是int(),float(),str(),list(),tuple()。查看类型type()

  • 运算符

+加法
-减法
* 乘法
/除法
%取模,返回除法的余数
//取整除数
**

  • 赋值运算符
运算符 描述 实例
= 简单的赋值运算符 c = a + b 将 a + b 的运算结果赋值为 c
+= 加法赋值运算符 c += a 等效于 c = c + a
-= 减法赋值运算符 c -= a 等效于 c = c - a
*= 乘法赋值运算符 c *= a 等效于 c = c * a
/= 除法赋值运算符 c /= a 等效于 c = c / a
%= 取模赋值运算符 c %= a 等效于 c = c % a
**= 幂赋值运算符 c **= a 等效于 c = c ** a
//= 取整除赋值运算符 c //= a 等效于 c = c // a

0x02.序列及通用操作

  • 序列:可变序列list,不可变序列tuple、str
    判断值是否属于序列print(1 in [1,2,3])
    序列的链接print([1,2,3]+[4,5,6])
    序列重复print([1,2,3]*2)
    索引第一个值[1,2,3][0]
    索引最后一个值[1,2,3][-1]
    索引中间四个[1,2,3,4,5,6,7,8,9,0][3:-3]
    按照2为步长取值[1,2,3,4,5,6,7,8,9,0][::2]
    序列的常见方法count,index,append,extend,pop,remove,insert,sort
    常见内置函数len,min,max,sum,type

  • 列表生成器range(5) range(10,100) range(0,10,2)

  • 文本序列
    表示方式:"" '' '''xxx'''
    转义字符:\
    空行:\n
    文件路径:/或者\\
    替换:replace,split,join,startswith,endswith,upper,lower,swapcase(大小写互换),capitalize,isnumeric(只包含数字True,否则False),isalpha(所有字符都是字母True,否则False),rstrip(删除字符末尾的空格)
    格式化字符:print("this is %i %s %f %0.2f %.2e %g %g" %(1,'a',0.2,0.567,123.123123123,123.12312,123.1))
    print("this is {} {} {} {:.2f} {:.2e} {} {}".format(1,'a',0.2,0.567,123.123123123,123.12312,123.1))

  • 转义字符

转义字符 描述
\(在行尾时) 续行符
\\ 反斜杠符号
' 单引号
" 双引号
\a 响铃
\b 退格(Backspace)
\e 转义
\000
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页
\oyy 八进制数,yy代表的字符,例如:\o12代表换行
\xyy 十六进制数,yy代表的字符,例如:\x0a代表换行
\other 其它的字符以普通格式输出
  • 字符串运算符
操作符 描述
+ 字符串连接
* 重复输出字符串
[] 通过索引获取字符串中字符
[ : ] 截取字符串中的一部分
in 成员运算符 - 如果字符串中包含给定的字符返回 True
not in 成员运算符 - 如果字符串中不包含给定的字符返回 True
r/R 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母"r"(可以大小写)以外,与普通字符串有着几乎完全相同的语法。
% 格式字符串
  • 字符串格式化符号
符号 描述
%c 格式化字符及其ASCII码
%s 格式化字符串
%d 格式化整数
%u 格式化无符号整型
%o 格式化无符号八进制数
%x 格式化无符号十六进制数
%X 格式化无符号十六进制数(大写)
%f 格式化浮点数字,可指定小数点后的精度
%e 用科学计数法格式化浮点数
%E 作用同%e,用科学计数法格式化浮点数
%g %f和%e的简写
%G %f 和 %E 的简写
%p 用十六进制数格式化变量的地址

其他常用功能可参考序列

0x03.字典映射

字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中。

  • 申明一个字典
    dict = {'name': 123, 98.6: 37, 'class': [1, 2, 3], (1, 2): [6, 7, 8]}
    dict = dict(name=123, a= [1, 2, 3])
    dict([("a","abc"),("b",123)])

  • 内置函数
    dict.update(dic2)把第二个字典合并到第一个字典。
    dict.get(key)查看key的value,如果没有相应key则返回None
    dict.keys()输出字典所有key,注意这里的输出内容格式是视图,可以用list()得到key的列表
    dict.values()输出字典所有values,同.keys()
    dict.items()输出字典所有items(k,v),原理同.keys()方法
    dict.clear()删除字典内所有元素
    dict.pop()删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。

其他常用功能常见内置函数都通用len,type,cmp

0x04.条件及循环语句

  • 条件语句
    Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
num = 5     
if num == 3:            # 判断num的值
    print 'boss'        
elif num == 2:
    print 'user'
elif num == 1:
    print 'worker'
elif num < 0:           # 值小于零时输出
    print 'error'
else:
    print 'roadman'     # 条件均不成立时输出

多条件判断:or and

  • 循环语句
控制语句 描述
break 语句 在语句块执行过程中终止循环,并且跳出整个循环
continue 语句 在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环。
pass 语句 pass是空语句,是为了保持程序结构的完整性。
  • for循环
for i in range(3):
    for j in range(2):
        print(i,j)
  • while循环
count = 0
while (count < 9):
    print('The count is:', count)
    count = count + 1
    if count  == 4:
        break
print("Good bye!")
loop-over-python-list-animation.gif

0x05.函数

  • 系统内置保留关键字
and exec not
assert finally or
break for pass
class from print
continue global raise
def if return
del import try
elif in while
else is with
except lambda yield
  • 内置函数
abs() divmod() input() open() staticmethod()
all() enumerate() int() ord() str()
any() eval() isinstance() pow() sum()
basestring() execfile() issubclass() print() super()
bin() file() iter() property() tuple()
bool() filter() len() range() type()
bytearray() float() list() raw_input() unichr()
callable() format() locals() reduce() unicode()
chr() frozenset() long() reload() vars()
classmethod() getattr() map() repr() xrange()
cmp() globals() max() reverse() zip()
compile() hasattr() memoryview() round() import()
complex() hash() min() set()
delattr() help() next() setattr()
dict() hex() object() slice()
dir() id() oct() sorted() exec
  • def创建函数
#可写函数说明
def printinfo(name,age=35,*vartuple):
    "打印任何传入的字符串"
    print("Name: ", name)
    print("Age ", age)
    for var in vartuple:
        print(var)
    return
printinfo("miki",50,70,60,50);
def vsum(a,b,c):
    return a+b+c

vsum = lambda a,b,c:a+b+c

0x06.模块与包

  • Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
    模块让你能够有逻辑地组织你的 Python 代码段。
    把相关的代码分配到一个模块里能让你的代码更好用,更易懂。
    模块能定义函数,类和变量,模块里也能包含可执行的代码。
    import 语句来引入模块
    from…import 从模块中导入一个指定的部分到当前命名空间中
    from…import* 把一个模块的所有内容全都导入到当前的命名空间
  • 模块路径问题
    import pandas
    print(pandas.file) # 查看现有包所在路径,将自己创建的包存入改路径
    import sys
    sys.path.append('C:/Users/') # 加载sys包,把新建的py所在路径添加上

  • 搜索路径
    当你导入一个模块,Python 解析器对模块位置的搜索顺序是:
    1、当前目录
    2、如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。
    3、如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/。
    模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。

  • PYTHONPATH 变量
    作为环境变量,PYTHONPATH 由装在一个列表里的许多目录组成。PYTHONPATH 的语法和 shell 变量 PATH 的一样。
    在 Windows 系统,典型的 PYTHONPATH 如下:
    set PYTHONPATH=c:\python27\lib;
    在 UNIX 系统,典型的 PYTHONPATH 如下:
    set PYTHONPATH=/usr/local/lib/python

0x07.数据读写

  • Python File读写
f = open('path.txt', 'r')
print(f.read())
f.close()
f = open('path.txt', 'w', encoding = 'utf8')
lst='abcd'
f.writelines(lst)
f.close()

file.flush()刷新文件内部缓冲
file.read([size])从文件读取指定的字节数,如果未给定或为负则读取所有。
file.readline([size])读取整行,包括 "\n" 字符。
file.readlines([sizeint])读取所有行并返回列表,若给定sizeint>0,则是设置一次读多少字节,这是为了减轻读取压力。
file.seek(offset[, whence])设置文件当前位置
file.write(str)将字符串写入文件,返回的是写入的字符长度。

  • pickle读写
import pickle
data = {'a':[1,2,3,4], 'b':11, 'c':'asd'}
p = open( 'data.pkl', 'wb')
pickle.dump(data,p)
p.close()
f = open( 'data.pkl', 'rb')
s = pickle.load(f)
  • mode 参数
模式 描述
t 文本模式 (默认)。
x 写模式,新建一个文件,如果该文件已存在则会报错。
b 二进制模式。
+ 打开一个文件进行更新(可读可写)。
U 通用换行模式(不推荐)。
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

你可能感兴趣的:(python合道-常规笔记)