这篇文章的初衷是总结这一个月以来学习和使用python的要点,基于MSRA的python for beginners以及牛客图书馆的python 3,还有平时查询相关文章的总结。
简单说就是笔记的流水账,想到哪写到哪吧!
1.开发环境
不可避免地,开始python开发前是环境的部署。这里采用win10+python 3.6+vscode。python 2.7面临不再维护,毫无疑问,应该体验python3的先进性,可以更多地接触到python里面的黑魔法还有语法糖还是非常有趣的。就像decorator, lambda, iteration, with这些都好有趣!3.8新出的海象操作符:=也是萌萌哒的。 另外本来一直用pycharm或者sublime的我,发现jupyter lab(notebook)很适合教程学习,而vscode更是神器(满足了当初我对sublime进化版的所有想象,关键没广告,界面也亲切!)
至于jupyter lab作为开发环境的不足是Debug不太方便,单步调试的中间变量查看以及调用栈回溯都找不到。但是vscode一应俱全,而且还能很好的兼容了jupyter notebook,所以大赞一波!
当然严谨的来说,你还需要使用pip3管理包,建议使用python -m pip install的指令安装,严格定义使用当前环境的python解释器。还有创建虚拟环境:1.anaconda,可以参照前面的文章 2.使用virtualenv, python -m venv env_name。最后在VSCODE配置选择使用的环境的python解释器。
2.基本语法要点
1.可变类型:list, set, dictionary
不可变类型: int, float, complex, string, tuple
最大区别在于是否能对本体存储做更改,操作不可变类型一般需要生产新的内存保存结果,对于函数调用而言:可变就是传引用,不可变则是传值。
2.排序sort为list的方法list.sort([key,[reverse=True]])
sorted为built-in方法,只要是iterable的数据类型都可用,sorted(list,[key,[reverse=True]]) 其中key接受一个参数的函数定义排序方式(lambda)
3.格式化输出有三种:
print('%.3f %-10.2e' %(float1, exponential1)) #习惯用
print('{0:0.3f} {1:-10.3e}'.format(float1, float2)) #建议用
print( f'{float1} {float2}')
4.import的三种方式
import pprint # 加入pprint命名空间,调用pprint.pprint()
from pprint import pprint #将指定函数pprint()加入到本地命名空间,调用pprint()
from pprint import * #将pprint中所有函数加入到本地命名空间,调用pprint()
建议尽量使用第二种import,避免使用第三种,第三种容易造成函数名冲突
5.指定包的环境配置可以写在requirement.txt里,pip install -r requirement.txt
6.每一个子包(子目录)必须要__init__.py以备父目录的模块可见,可以在里面定义__all__指定from 子模块 import *里面的指定函数
7.调用云API时,注意申请账户,KEY,定义好HTTP请求
import request
import json
response = request.post(address, headers, function_paramter, message_body)
res = response.json()
print(json.dumps(res))
8.处理关键、敏感、配置信息可以放在**.env文件里,.gitignore**包含.env以防信息上传外泄。
9.Decorator用于修饰函数或者类,利用函数闭包,将被修饰的函数放入wrapper里面调用。
10.运算符重载add, sub, mul, truediv,__ floordiv__,mod,pow
11.文件IO一般用with as
with open(filepath, mode) as f:
f.read()
f.write()
3.python自带模块和函数
import os #系统命令 getcwd, chdir, chmod, mkdir, listdir
import sys #系统信息, 程序信息,参数sys.argv
import glob #匹配符 glob
import re #正则匹配 match, search, sub, split
import math #数学 sqrt, pow, sin, cos, ceil, floor, abs, fabs
import random #随机数 seed, random, randint, choice, shuffle
import urllib.request #HTTP请求 request.post get
import datetime #日期时间 date.today, datetime.now, timedelta
import timeit #性能分析 timeit(stmt, setup, number)
import zlib #压缩 compress, decompress
import doctest #独立文件测试 testmod
import unittest #单元测试, TestSuite, addTest, TextTestRunner, makeSuite
import builtins #builtin为python2
dir(builtins) #包含各种各样的Warning类和Error异常处理类以及关键字
#一个类包含__init__构造函数,__new__创建实例, __str__定义print()的输出,
# iterable的定义了__iter__, hashable的定义了__hash__
#常用自带函数
# len, max, min, chr, ord, encode, decode, sorted, range