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+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容

  • 他是她,她不是她 他说他身上有她的味道 所以他是她的寄托 她说她不是她 连她自己都不知道她是她 怎么能说她是她呢 ...
    TheSkyCloud阅读 713评论 12 29
  • 区块链将改变世界--真的吗? 大部分从业者带着这样的口号,冲进了这场声势浩荡的变革中。区块链技术,不是最近才有,从...
    赵程冲阅读 117评论 0 0