python学习2019/05/04

匿名函数

def add(x,y):
return x+y
print(add(1,2))

f = lambda x,y: x+y # lambda parameter_list: expression
print(f(1,2)) # lanbda 函数最后只能是一个表达式

#三元表达式
#其他语言中 : x > y ? x : y x大于y的情况下返回x,否则返回y
#python中: 条件为真时的返回结果 if 条件判断 else 条件为假的时候返回的结果
x=2
y=5
r = x if x>y else y
print ®

map

#map

list_x = [1,2,3,4,5,6,7,8]

def square(x):
return x*x

#for x in list_x:
#square(x)

a = map (square,list_x)
print (list(a))
输出
[1, 4, 9, 16, 25, 36, 49, 64]
进行了一次映射

list_x = [1,2,3,4,5,6,7,8]

a = map (lambda x: x*x,list_x)
print (list(a))

结合lambda函数使用map函数可以更简单的实现我们需要表示的东西

list_x = [1,2,3,4,5,6,7,8]
list_y = [1,2,3,4,5,6,7,8] #如果两行list内部数值不相等,那么只取短的那段
a = map (lambda x,y: x*x+y,list_x,list_y) #lanbda函数取值要与列表个数相同
print (list(a))

reduce

#reduce 连续的计算,持续调用lambda表达式
from functools import reduce
list_x =[1,2,3,4,5,6,7,8]
a = reduce(lambda x,y:x+y,list_x,5) #最后,5这个值是初始值,默认为0,从开始参与运算
print (a)
#(1+2)=(x+y)=3 再调用=x y=3 3+3=x+y=6在调用=x y=4 直到y=8计算完毕
#map/reduce 编程模型,映射/归约 在大数据中进行并行计算

filter

list_x = [1,2,5,3,4,1,5,6,7,4,8]
a = filter (lambda x: True if x>1 else False,list_x)
print (list(a)) #filter函数内只能判断bool函数

命令式编程与函数式编程

命令式编程一般有
def,is else ,for
函数式编程一般有
map,reduce,filter 函数
lambda 算子,函数表达式
lisp语言是函数式编程的鼻祖
可以学习此语言进行更深入的学习
一般在python中建议还是使用命令式编程,
辅以函数式编程进行代码的简化

装饰器

c# 中等同与’特性‘
java中等同于‘注解’

import time
def f1():
print(‘this is a function’)
#time输出的是unix 时间戳,(unix timestemp)或称(unix time)
#posix时间(posix time)是一种时间表示方式
#定义为从格林威治时间1970年1月1日0时0分0秒起至现在的总秒数
#对修改是封闭的,对扩展是开放的。
#如果每个函数下都需要加入time函数,那么
def f2():
print(’???’)

def print_current_time(func):
print(time.time())
func()

print_current_time(f1)
print_current_time(f2)

使用装饰器来试一下

import time
def decorator(func): #装饰
def wrapper(args,kw): #封装 # args为自定义可变函数,但是不兼容格式
print (time.time()) # 所以需要再补上一个形式参数
*
func(*args,**kw) #并且进行调用
return wrapper
@decorator #语法塘,装饰器最大的特点,不改变调用
def f1(func_name):
print(‘this is a function’,func_name)

@decorator
def f2(func_name1,func_name2):
print(‘other function’,func_name1)
print(‘else function’,func_name2)

@decorator
def f3(func_name3,**func_dict):
print(‘我不是function’,func_name3)
print(func_dict)

f1(‘bb’)
f2(‘cc’,‘dd’)
f3(‘ee’,a=1,b=2,c=‘123’)

装饰器不破坏代码原本结构并且满足复用性
完美诠释了开闭原则

开发web,flask(进阶)

@api.route(’/get’,method=[‘GET’])
def test_javascript_http():
p =request.args.get(‘name’)
return p, 200

@api.route(’/psw’,method=[“GET”])
@auth.login_required
def get_psw():
p = request.args.get(‘psw’)
r = generate_password_hash§
return(‘aaaaaa’,200)

装饰器可以叠加使用,装饰器的调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值