python 基础
学习python3的时候,记录一下。
1、range(num)函数,返回0到num-1的列表
>>> list = range(100) >>> print(list) range(0, 100) >>> print(type(list)) <class 'range'> >>>
>>> for i in range(100): ... sum = sum + i + 1 ... >>> print(sum) 5050
2、参数传递
在python中,有以下几种参数传递方式:
- 位置传递
- 关键字传递
- 参数默认值
- 包裹传递(packing) vs 解包裹(unpacking)
混合传递时原则:
先位置,后关键字,包裹位置,包裹关键字
位置传递:
>>> def f(a,b,c): ... return a+b+c ... >>> print(f(1,2,3)); 6
关键字传递:
>>> def f(a,b,c): ... return a+b+c ... >>> print(f(a=1,b=2,c=3)); 6
默认参数值:
>>> def f1(a,b,c=10): ... return a+b+c; ... >>> print(f1(1,2)) 13 >>> print(f1(5,2)) 17 >>> print(f1(2,4,5)) 11 >>> print(f1(b=6)) 17
一个星号表示传入元组、两个星号表示传入字典
解包裹传递:
>>> def func3(a,b,c): ... print(a,b,c) ... >>> a = (1,3,5) >>> func3(*a) 1 3 5
>>> def func3(a,b,c): ... print(a,b,c) ... >>> b = {"a":"10","b":"20","c":"30"} >>> func3(**b) 10 20 30
3、函数对象(lambda函数)
lambda函数语法:
lambda a, b : a + b lambda 参数 : 方法体
>>> func = lambda a, b : a + b >>> def sum(f,a,b): ... print("--- the sum function ---") ... print(f(a,b)) ... >>> >>> sum(func,10,20) --- the sum function --- 30 >>>
4、内置函数:
type() 查看变量类型
dir() 查看变量有哪些方法
>>> b = {"a":"1234"} >>> >>> dir(b) ['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__' , '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', ' __lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__seta ttr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'co py', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update ', 'values']
help()
len() 长度
open() 文件输入和输出
循环相关
range()
enumerate()
zip()
iter() 循环对象
>>> list = [1,2,3,4]; >>> i = iter(list) >>> i.__next__() 1 >>> i.__next__() 2 >>> i.__next__() 3 >>> i.__next__() 4 >>> i.__next__() Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration >>>
map() 函数是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。
如:处理数值,例如,对于list [1, 2, 3, 4, 5, 6, 7, 8],如果希望把list的每个元素都作平方,就可以用map()函数:
>>> num_list = [1,2,3,4,5,6,7,8] >>> func = lambda x : x*x >>> num_map = map(func,num_list) >>> print(list(num_map)) [1, 4, 9, 16, 25, 36, 49, 64]
如:处理字符串,假设用户输入的英文名字不规范,没有按照首字母大写,后续字母小写的规则,请利用map()函数,把一个list(包含若干不规范的英文名字)变成一个包含规范英文名字的list:
输入:['adam', 'LISA', 'barT']
输出:['Adam', 'Lisa', 'Bart']
>>> str_list = ['adam', 'LISA', 'barT']; >>> func = lambda x : x[0:1].upper() + x[1:].lower(); >>> str_map = map(func,str_list); >>> print(list(str_map)); ['Adam', 'Lisa', 'Bart']
filter() 函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。
例如:删除 None 或者空字符串:
>>> str_list = ['test', None, '', 'str', ' ', 'END'] >>> def is_not_empty(s): ... return s and len(s.strip()); # and前的s用来排除None ... >>> rs = filter(is_not_empty,str_list) >>> print(list(rs)) ['test', 'str', 'END']
reduce()函数也是Python内置的一个高阶函数。reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。
并且reduce()函数还可以传入第三个参数,用来做函数f的初始参数。
在Python 3里,reduce()函数已经被从全局名字空间里移除了,它现在被放置在fucntools模块里 用的话要 先引
入:
入:
>>> from functools import reduce
如reduce(f, [1, 3, 5, 7, 9], 100),则先将计算f(100,1)。
可以用来做求和,虽然python自带了sum函数。
例如:求积:[2, 4, 5, 7, 12]
>>> from functools import reduce >>> num_list = [2, 4, 5, 7, 12] >>> func = lambda x,y : x*y >>> rs = reduce(func,num_list) >>> print(rs) 3360
在100的基础上求积:[2, 4, 5, 7, 12]
>>> from functools import reduce >>> num_list = [2, 4, 5, 7, 12] >>> func = lambda x,y : x*y >>> rs = reduce(func,num_list,100) >>> print(rs) 336000
数学运算函数:
• abs(-2) #取绝对值
• round(2.3) #取整
• pow(3,2) #乘方
• cmp(3.1, 3.2) #比较大小
• divmod(9,7) #返回除法结果和余数
• max([2,4,6,8]) #求最大值
• min([1,2, -1, -2]) #求最小值
• sum([-1,1,5,7]) #求和
• round(2.3) #取整
• pow(3,2) #乘方
• cmp(3.1, 3.2) #比较大小
• divmod(9,7) #返回除法结果和余数
• max([2,4,6,8]) #求最大值
• min([1,2, -1, -2]) #求最小值
• sum([-1,1,5,7]) #求和
类型转化函数:
• int(“10”) #字符转为整数
• float(4) #转为浮点数
• long(“17”) #转为长整数
• str(3.5) #转为字符串
• complex(2, 5) #返回复数 2 + 5i
• ord(“A”) #A对应的ascii码
• chr(65) #ascii码对应的字符
• unichr(65) #数值65对应的unicode字符
• bool(0) #转换为相应的真假值,0相当于False
btw: “空”值相当于False: [], (), {}, 0, None, 0.0, ''
• float(4) #转为浮点数
• long(“17”) #转为长整数
• str(3.5) #转为字符串
• complex(2, 5) #返回复数 2 + 5i
• ord(“A”) #A对应的ascii码
• chr(65) #ascii码对应的字符
• unichr(65) #数值65对应的unicode字符
• bool(0) #转换为相应的真假值,0相当于False
btw: “空”值相当于False: [], (), {}, 0, None, 0.0, ''
序列操作函数:
• all([True, 2, “wow!"]) #是否所有元素相当于True
• any([0, “”, False, [], None]) #是否有元素相当于True
• sorted([1,7,4]) #序列升序排序
• reversed([1,5,3]) #降序排序
• list((1,2,3)) #转换为表list
• tuple([4,5,4]) #转换为tuple
• dict(a=3,b=“hi”,c=[1,2,3]) #构建字典
• any([0, “”, False, [], None]) #是否有元素相当于True
• sorted([1,7,4]) #序列升序排序
• reversed([1,5,3]) #降序排序
• list((1,2,3)) #转换为表list
• tuple([4,5,4]) #转换为tuple
• dict(a=3,b=“hi”,c=[1,2,3]) #构建字典
其它函数:
• id() #查看对象的内存位置
• type() #查看对象类型
• len() #查看对象长度
• input(‘ input something ’) #等待用户输入
• globals() #返回全局变量名,函数名
• locals() #返回局部命名空间
• globals() #返回全局变量名,函数名
• locals() #返回局部命名空间
5、面向对象
- 私有属性,所有方法。在方法名,属性名前加“__”。例如: __private_name
__private_name = 1; def __private_func(self,name): print(name);
- 类名称首字母大写:
class ClassName():
6、模块
- 安装pip:
# 先安装setuptools https://pypi.python.org/pypi/setuptools # 后安装pip https://pypi.python.org/pypi/pip
- 编译安装
# 编译(如果下载的是源码) python setup.py build # 安装(所有python的模块都适用) python setup.py install # 安装模块(安装玩pip后) pip install xxx
- 引入模块:
import module_name; import module_name as mn; from module_package import module_name; from module_package import *;
- 模块引入路径:
模块搜索路径: 1、程序所在的位置 2、标准库的安装路径 3、操作系统环境变量PYTHONPATH指向的位置 但是如果我们的模块不在上述位置时,需要在环境变量中加入如下路径: export PYTHONPATH=$PYTHONPATH:{module_path}
7、python标准库:
• 正则表达式 (re包)
• 时间与日期 (time, datetime包)
• 路径与文件 (os.path包, glob包)
• 文件管理 (部分os包,shutil包)
• 存储对象 (pickle包,cPickle包)
• 子进程 (subprocess包)
• 信号 (signal包)
• 线程同步 (threading包)
• 进程信息 (部分os包)
• 多进程初步 (multiprocessing包)
• 数学 (math包)
• 随机数(random包)
• 循环器 (itertools)
• 数据库 (sqlite3)
• …
• [官方文档] • Python 2: • https://docs.python.org/2/library • Python 3: • https://docs.python.org/3/library/index.html