• 【python】 入门


    函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数

    http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386819196283586a37629844456ca7e5a7faa9b94ee8000

    函数

    定义函数

    def my_abs(x):
    if x >= 0:
    return x
    else:
    return -x


    result =my_abs(10)
    print(result)

    高级特性

    切片

    Slice 

    L[:3]

    迭代

    d = {'a': 1, 'b': 2, 'c': 3}
    for key in d:
    print key #注意这个缩进 代替了{ }
     
     
    for ch in 'ABC':
    print ch
     

    for x, y in [(1, 1), (2, 4), (3, 9)]:
    print x, y
     

    函数式编程

    函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数

    Python对函数式编程提供部分支持。由于Python允许使用变量,因此,Python不是纯函数式编程语言。

    def add(x, y, f):
    return f(x) + f(y)
    print add(-5, 6, abs)
     
    结果:11
     
    把函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式。
     

    map/reduce

     
    如果你读过Google的那篇大名鼎鼎的论文“MapReduce: Simplified Data Processing on Large Clusters”,你就能大概明白map/reduce的概念。
    map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。

    reduce

    把一个函数作用在一个序列[x1, x2, x3...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:

    #map
    def f(x):
    return x * x
    print map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])

    #reduce
    def fn(x, y):
    print x,y, x * 10 + y
    return x * 10 + y
    print reduce(fn, [1, 3, 5, 7, 9])
    filter()也接收一个函数和一个序列。和map()不同的时,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
     
    def is_odd(n):
    return n % 2 == 1
    print filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15])
     
     
     

    IO编程

     

    读文件

    f = open('D:logslog.txt', 'r')
    print f.read()
     
    写文件
    f = open('/Users/michael/test.txt', 'w')
    f.write('Hello, world!')
    f.close()
     
     

    中文注释

     
    # 
    ## -*- coding: utf-8 -*-

    __author_='robin'
    # 中文注释
    print "Hello World!"
     
    必须放在第一行
     
     
     

    TCP编程

     
    #
    ## -*- coding: utf-8 -*-

    # 导入socket库:
    import socket
    # 创建一个socket:
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 建立连接:
    s.connect(('m.y**t**.com', 80))

    while True:
    data = s.recv(1024)
  • 相关阅读:
    如何在Oracle官网下载java的JDK最新版本和历史版本
    屏幕录制专家【Bandicam】
    Bandicam下载 + 破解
    华为荣耀7i手动更改DNS,提高网页加载速度
    SQL中使用GROUP BY注意事项
    JavaScript数据类型判断
    React.lazy和Suspense组合实现组件懒加载
    使用React+TypeScript构建自己的组件库
    leetcode-0101 对称二叉树
    leetcode-0543 二叉树的直径
  • 原文地址:https://www.cnblogs.com/viewcozy/p/4600959.html
Copyright © 2020-2023  润新知