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 func(*name):
...     print(type(name))
...     print(name)
...
>>> func(1,2)
<class 'tuple'>
(1, 2)
>>> func(1,2,4,5,6)
<class 'tuple'>
(1, 2, 4, 5, 6)

 

 
>>> def func1(**name):
...     print(type(name))
...     print(name)
...
>>> func1(a=1,b=2,c=3)
<class 'dict'>
{'a': 1, 'b': 2, 'c': 3}
>>> func1(1,2,3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: func1() takes 0 positional arguments but 3 were given

 

 
解包裹传递:
>>> 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]) #求和


类型转化函数:
• 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, ''


序列操作函数:
• 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]) #构建字典


 
其它函数:
 id() #查看对象的内存位置
 type() #查看对象类型
 len() #查看对象长度
• input(‘ input something ’) #等待用户输入
• 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

 

 

posted @ 2018-03-02 17:21  刍荛采葑菲  阅读(278)  评论(0编辑  收藏  举报