def count():
fs = []
for i in range(1, 4):
def f(j):
def g():
return j*j
return g
r = f(i)
fs.append(r)
return fs
f1, f2, f3 = count()
print f1(), f2(), f3()
fs = []
for i in range(1, 4):
def f(j):
def g():
return j*j
return g
r = f(i)
fs.append(r)
return fs
f1, f2, f3 = count()
print f1(), f2(), f3()
2018-04-05
在Python 3x 上,因为所有的字符都被认为是Unicode,只需使用__str__() 方法(__unicode__() 方法被废弃)
2018-04-04
def prod(x, y):
return x*y
print reduce( prod, [2, 4, 5, 7, 12] )
python3中,要使用reduce,得从functools中引入,加上:
from functools import reduce
return x*y
print reduce( prod, [2, 4, 5, 7, 12] )
python3中,要使用reduce,得从functools中引入,加上:
from functools import reduce
2018-04-04
法1
def format_name(s):
return s.title()
print map( format_name, ['adam', 'LISA', 'barT'] )
法2
s.capitalize()
法3
def format_name(s):
return s[0].upper()+s[1:].lower()
def format_name(s):
return s.title()
print map( format_name, ['adam', 'LISA', 'barT'] )
法2
s.capitalize()
法3
def format_name(s):
return s[0].upper()+s[1:].lower()
2018-04-04
import math
def add(x, y, f):
return f(x) + f(y)
print add( 25, 9, math.sqrt )
或者
from math import sqrt
print add( 25, 9, sqrt )
或者
def fun(i):
return i**0.5
def add(x, y, f):
return f(x) + f(y)
print add( 25, 9, math.sqrt )
或者
from math import sqrt
print add( 25, 9, sqrt )
或者
def fun(i):
return i**0.5
2018-04-04
1.变量可以指向函数。
2.函数名其实就是指向函数的变量。
3.高阶函数:能接收函数做参数的函数。
因为:1变量可以指向函数
2函数的参数可以接收变量
3一个函数可以接收另一个函数作为参数
4能接收函数作为参数的函数就是高阶函数
【例子】 def add( x,y,f )
return f(x)+f(y)
add( -5 , 9 , abs )
14
2.函数名其实就是指向函数的变量。
3.高阶函数:能接收函数做参数的函数。
因为:1变量可以指向函数
2函数的参数可以接收变量
3一个函数可以接收另一个函数作为参数
4能接收函数作为参数的函数就是高阶函数
【例子】 def add( x,y,f )
return f(x)+f(y)
add( -5 , 9 , abs )
14
2018-04-04
高 python ---->函数式 计算
C语言 ---->函数
汇编语言
低 计算机硬件-->指令 计算机
把计算视为函数而非指令
纯函数式编程:不需要变量(也可以有变量),没有副作用,测试简单
支持高阶函数,代码简洁
Python
1不是纯函数式编程:允许有变量
2支持高阶函数:函数也可以作为变量传入
3支持闭包:有了闭包就能返回函数
4有限度地支持匿名函数
C语言 ---->函数
汇编语言
低 计算机硬件-->指令 计算机
把计算视为函数而非指令
纯函数式编程:不需要变量(也可以有变量),没有副作用,测试简单
支持高阶函数,代码简洁
Python
1不是纯函数式编程:允许有变量
2支持高阶函数:函数也可以作为变量传入
3支持闭包:有了闭包就能返回函数
4有限度地支持匿名函数
2018-04-04
print(list(filter(lambda x:sqrt(x)%1==0,[_ for _ in range(1,101)])))
2018-04-04
名字前后有空格:print(list(map(lambda x:x.title().strip(),[' adam ', ' LISA', 'barT '])))
2018-04-04
print(list(map(lambda x:x.capitalize(), ['adam', 'LISA', 'barT'])))
2018-04-04
#coding=utf-8
from math import sqrt
def add(x,y,f):
return f(x)+f(y)
add(5,4,sqrt)
from math import sqrt
def add(x,y,f):
return f(x)+f(y)
add(5,4,sqrt)
2018-04-04
函数式只是一种编程的paradigm, 既然是paradigm,只是一种思想,老师不能给学生一种用c就不能函数式编程的错误概念,实际上c,c++都能很好的支持函数式编程,函数式编程也不是只有支持闭包的语言才能支持,c语言的指针和函数指针一样能够很好的完成变量是函数的概念,所以不要轻易的跟c做对比,贬低c,这是不妥的,而且python语言并不认为函数式编程是它重要的一个特点,只是我们有函数,函数作为参数,变量保存函数和闭包这些概念而已
2018-04-03
class Person(object):
count = 0
def __init__(self,name):
self.name = name
Person.count += 1
p1 = Person('Bob')
print Person.count
p2 = Person('Alice')
print Person.count
p3 = Person('Tim')
print Person.count
count = 0
def __init__(self,name):
self.name = name
Person.count += 1
p1 = Person('Bob')
print Person.count
p2 = Person('Alice')
print Person.count
p3 = Person('Tim')
print Person.count
2018-04-03