Python学习笔记1
来源:互联网 发布:filter 过滤css和js 编辑:程序博客网 时间:2024/06/16 01:30
心得:由于有Java和C的一些基础Py的学习相对容易。但是Py给我相当大的震撼,感觉之前的自己就像一只活在面向对象深井中的青蛙,python让我见识到了函数式编程的辽阔世界,给了我简单到极致的编程体验。当然我不是说python能取代java什么的,不同的语言都有自己存在的方式,它们面向不同应用领域展现着自己的独到的价值。
Python基础
list[] tuple() dict{} set(list)
- 位置参数
def power (***x***)
- 默认参数
def power(x, ***n=2***)
- 可变参数
def power(****numbers ***)
- 关键字参数
def person(name, age, *****kw***)
- 命名关键字参数
def person(name, age, ****, city, job***)
- 命名关键字参数限制了关键字参数的名字,如上关键字参数只能接受city和job。
- 参数组合
- 顺序只能为:必选参数,默认参数,可变参数,命名关键字参数,关键字参数。
- 切片
x[:::]
- 第一个冒号:开始
- 第二个冒号:结束
- 第三个冒号:间隔
- 列表生成式
[x * x for x in range(10) if x % 2 == 0]
x * x
: 要生成的值x
:遍历元素in
:遍历容器if
:遍历条件
- 判断是否可以被迭代器迭代
form collection import Iterable
isinstance(***'abc'***, Iterable)
- 判断
'abc'
是否可被for迭代 - 把Iterable换成
Iterator
可以判断是否可以被nxet()
迭代
- 生成器:列表生成式[]换成()
Python函数式编程
- 变量可以指向函数,函数名也是变量(有没有想到指针)
- 高阶函数: 一个函数可以接受一个函数作为参数
- map:
map(f, [])
函数接受两个参数,一个是函数,一个是Iterable
- 用
f
作用于list
的每一个元素。
- reduce:
reduce(f, [])
参数类型和map一样- reduce把一个函数作用在一个序列
[x1, x2, x3, ...]
上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算。 reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
- filter:
filter()
也接收一个函数和一个序列。和map()不同的是,filter()- 把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
- sorted:
sorted([])
函数就可以对list进行排序sorted([], key)
函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序,例如按绝对值大小排序:sorted([36, 5, -12, 9, -21], key=abs)
- 心得: sorted函数对应于C&C++中的
sort()
函数,并且参数调用的顺序都是一样的,先序列,后用一个函数制定规则,并且函数的写法完全一致,只是格式从C&C++变成python。
- 返回函数
- 返回函数实际上就是返回函数名或者说是返回指向函数的一个变量(是不是又感受到了指针,其实理解指针对理解py极其有帮助,py并不像Java那样几乎完全抹除指针存在的痕迹,py的思想中处处隐含着指针)
匿名函数lambda:
lambda x: x * x
实际上就是def f(x): return x * x
装饰器
(这让我想起了AOP,难道不是吗?)
def log(func): def wrapper(*args, **kw): print('call %s():' % func.__name__) return func(*args, **kw) return wrapper
上面的log,因为它是一个decorator,所以接受一个函数作为参数,并返回一个函数。我们要借助Python的@语法,把decorator置于函数的定义处:
@logdef now(): print('2015-3-25')
调用now()函数,不仅会运行now()函数本身,还会在运行now()函数前打印一行日志:
>>> now()call now():2015-3-25
阅读全文
0 0
- python学习笔记1
- python学习笔记(1)
- python学习笔记(1)
- Python学习笔记1
- Python学习笔记1
- Python 学习笔记(1)
- Python学习笔记1
- python学习笔记【1】
- Python学习笔记【1】
- python学习笔记--1
- python学习笔记1
- Python学习笔记[1]
- python学习笔记--1
- python学习笔记1
- Python学习笔记 - 1
- 学习Python笔记1
- Python学习笔记(1)
- Python学习笔记.1
- hdu 1114 Piggy-Bank 完全背包问题
- WebService
- ZOJ3983+3992+3993
- 统计学习方法 1-统计学习方法概论
- 前端基础之HTML
- Python学习笔记1
- java8中 lambda语法和stream
- 【多线程】JAVA——Runnable接口实现[一]
- 仅自己电脑识别不了自己U盘,却能识别其他U盘
- android点击链接打开应用对应界面
- 使用Swiper4插件问题
- 求最小环
- ios 禁止将页面中的一连串数字识别为电话号码
- Java8 lamada表达式的简单使用