函数式编程

高阶函数

  1. Python学习交流Q群:660193417####
  2. map(func, *iterable)
  3. def fn(x, y, z):
  4. pass
  5. map(fn, range(10), range(10), range(10))
  1. \Python学习交流Q群:660193417###
  2. filter(func, iterable)
  3. sorted(iterable, key=None, reverse=False)
  4. sorted('AGFBDC')
  5. sorted('ACDacbdE') # ['A', 'C', 'D', 'E', 'a', 'b', 'c', 'd']
  6. # 按字符顺序排序,不区分大小写
  7. def f(ch):
  8. code = ord(ch) # 得到编码
  9. if (97+26) >code >= 97:
  10. code -= 32
  11. return code
  12. sorted('ACDacbdE', key=f) # ['A', 'a', 'b', 'C', 'c', 'D', 'd', 'E']

递归调用

  1. 闭包 closure
  2. def fa(a, b):
  3. c = a + b
  4. def fx(x):
  5. return a*x
  6. return fx
  7. f1 = fa(1, 2)

装饰器 decorators(专业提高篇)

  1. 问题:
  2. def say(x):
  3. print("您好:", x)
  1. say('老魏') # 您好: 老魏
  2. say('小张')
  3. # 希望打印:
  4. 开始问候:
  5. 您好:老魏
  6. 结束问候

函数装饰器

函数装饰器是指装饰的是一个函数,传入的是一个函数,返回的也是一个函数的函数。

  1. 函数装饰器的语法:
  2. def 装饰器函数名(参数):
  3. 语句块
  4. return 函数对象
  1. 被装饰函数的语法
  2. @装饰器函数名
  3. def 函数名(形参列表):
  4. 语句块

示例见:

code/01_deco1.py

带有参数的装饰器及应用案例

  1. 见: 03_mydeco3.py

函数的文档字符串

函数内部,第一个没有赋值给任何变量的字符串为文档字符串

  1. 语法:
  2. def 函数名(形参列表):
  3. '''函数的文档字符串'''
  4. 函数语句块
  5. 示例:
  6. def cba():
  7. '这是一块文档字符串...'
  8. pass
  9. >>> help(cba)

函数的 __doc__属性

__doc__属性用于绑定该函数的文档字符串

示例:

def fx(a, b):

  1. '''这是函数的文档字符串
  2. 这是第二行...
  3. '''

print(fx.doc)

  1. 函数的__name__属性:
  2. __name__属性用于绑定函数名的字符串
  3. 示例:
  4. def fx():
  5. pass
  6. f1 = fx
  7. print(f1.__name__)

函数定义语句(def语句的语法)

[@装饰器名1]

[@装饰器名2]

def 函数名([位置形参],[*[元组形参名]], [命名关键字形参], [**字典形参]):

  1. '''文档字符串'''
  2. 语句块

注: []里的内容代表可省略

面试题:

  1. Python学习交流Q群:660193417####
  2. L = [1, 2, 3]
  3. def f(n, lst=[]):
  4. lst.append(n)
  5. print(lst)
  6. f(4, L) # 请问结果是[1, 2, 3, 4]
  7. f(5, L) # 请问结果是[1, 2, 3, 4, 5]
  8. f(100) # 请问打印结果是[100]
  9. f(200) # 请问打印结果是[100, 200]
  10. 说明:
  11. 默认参数(缺省参数)绑定在函数对象内部,具随函数的生命一直存在

解决办法:

  1. L = [1, 2, 3]
  2. def f(n, lst=None):
  3. if lst is None:
  4. lst = []
  5. lst.append(n)
  6. print(lst)
  7. f(4, L) # 请问结果是[1, 2, 3, 4]
  8. f(5, L) # 请问结果是[1, 2, 3, 4, 5]
  9. f(100) # 请问打印结果是[100]
  10. f(200) # 请问打印结果是[200]

问题:

  1. 多人写一个程序时该怎么做?
  2. 模块 Module
  3. 什么是模块:
  4. 模块是一个包含有一系列数据,函数,类等组成的程序组
  5. 模块是一个文件,模块文件名通常以.py结尾

作用:

  1. 让一些相关的数据,函数,类等有逻辑的组织在一起,使逻辑结构更加清晰
  2. 模块中的数据,函数和类等可提供给其它模块或程序使用

模块的分类:

  1. 1. 内置模块(builtins),在解析器的内部可以直接使用
  2. 2. 标准库模块,安装python时已安装且可直接使用
  3. 3. 第三方模块(通常为开源),需要自己安装
  4. 4. 用户自己完的模块(可以作为其它人的第三方模块)

模块的导入语句

import 语句

语法:

  1. import 模块名1[as 模块新名1][,模块名2 [as 模块新名2]], ...

示例:

  1. Python学习交流Q群:660193417###
  2. # 导入数学模块
  3. import math
  4. # 导入系统模块sys和 os模块
  5. import sys, os
  6. 作用:
  7. 将某模块整体导入到当前模块
  8. 用法:
  9. 模块.属性名
  1. dir(obj) 函数返回模块所有属性的字符串列表
  2. help(obj) 可以查看模块相关的文档字符串

练习 :

  1. 1. 输入一个正方形的周长,输出正方形的面积
  2. 2. 输入一个圆的半径,打印出这个圆的面积
  3. 3. 输入一个正方型的面积,打印这个正方型的周长
  4. ( 要求: math模块内的函数和数据)

from import 语句

语法:

  1. from 模块名 import 模块属性名1 [as 属性新名1][,模块属性名2[as 属性新名2], ...]

作用:

将某模块内的一个或多个属性导入到当前模块的作用域

示例:

  1. from math import pi
  2. from math import pow, sqrt
  3. from math import factorial as fac
  4. ...

from import *语句

语法:

  1. from 模块名 import *

作用:

  1. 将某模块的所有属性都导入到当前模块

示例:

  1. from math import *

dir 函数:

  1. dir([对象]) 返回一个字符串列表

作用:

  1. 一、如果没有参数调用,则返回当前作用域内的所有变量的列表
  2. 二、如果给定一个对象作为参数,则返回这个对象的所有变量的列表
  3. 1. 对于一个模块,返回这个模块的全部属性
  4. 2. 对于一个类对象,返回类对象的所有变量,亲递归基类对象的所有变量
  5. 3. 对于其它对象,返回所有的变量,类变量,基类变量

数学模块 math

模块名math

相关文档见:

  1. python_base_docs_html/数学模块math.html

时间模块 time

  1. 此模块提供了时间相关的函数,且一直可用

相关文档见:

  1. python_base_docs_html/时间模块time.html

练习:

  1. 写一个程序,输入你的出生日期
  2. 1) 算出你已经出生了多少天?
  3. 2) 算出你出生那天是星期几?

还是练习:

  1. 1. 写一个程序,以电子时钟格式打印时间:
  2. 时间格式为:
  3. HH:MM:SS
  4. 时间每隔一秒刷新一次
  5. 2. 编写一个闹钟程序,启动时设置定时时间,到时候后打印出一句语,然后程序退出
  6. 3. 请编写函数fun,其功能是计算下列多项式的和
  7. sn = 1 + 1/1! + 2/2! + 3/3! + ... n/n!
  8. 计算n100时的值
  9. 看一下求出来的和是什么?
  10. (建议用math.factorial)

最后

今天的分享到这里就没有了,下一章见啦!!!!!!

Python基础知识+题目练习,我不信你能做出这道题的更多相关文章

  1. Python开发【第二篇】:Python基础知识

    Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...

  2. python基础知识(二)

    以下内容,作为python基础知识的补充,主要涉及基础数据类型的创建及特性,以及新数据类型Bytes类型的引入介绍

  3. python 基础知识(一)

    python 基础知识(一) 一.python发展介绍 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本 ...

  4. python基础知识讲解——@classmethod和@staticmethod的作用

    python基础知识讲解——@classmethod和@staticmethod的作用 在类的成员函数中,可以添加@classmethod和@staticmethod修饰符,这两者有一定的差异,简单来 ...

  5. python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

    本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...

  6. python 爬虫与数据可视化--python基础知识

    摘要:偶然机会接触到python语音,感觉语法简单.功能强大,刚好朋友分享了一个网课<python 爬虫与数据可视化>,于是在工作与闲暇时间学习起来,并做如下课程笔记整理,整体大概分为4个 ...

  7. python基础知识小结-运维笔记

    接触python已有一段时间了,下面针对python基础知识的使用做一完整梳理:1)避免‘\n’等特殊字符的两种方式: a)利用转义字符‘\’ b)利用原始字符‘r’ print r'c:\now' ...

  8. Python基础知识(五)

    # -*- coding: utf-8 -*-# @Time : 2018-12-25 19:31# @Author : 三斤春药# @Email : zhou_wanchun@qq.com# @Fi ...

  9. Python基础知识(Basic knowledge)

    Python基础知识(Basic knowledge) 1.认识Python&基础环境搭建 2.Python基础(上) 3.Python基础(中) 4.Python基础(下) 5.Python ...

随机推荐

  1. 关于python中selenium一些知识点

    selenium几种元素操纵方法 切换iframe层 #切换至xx iframe层 driver.switch_to.frame("name and id") # 切回主HTML层 ...

  2. Java 8的18个常用日期处理

    Java 8的18个常用日期处理 一.简介 伴随 lambda表达式.streams 以及一系列小优化,Java 8 推出了全新的日期时间API. Java处理日期.日历和时间的不足之处:将 java ...

  3. jquery 动态 给select赋值

    <div class="right_left"> <select id="supply"> <option>请选择供应商&l ...

  4. 同时将代码备份到Gitee和GitHub

    同时将代码备份到Gitee和GitHub 如何将GitHub项目一步导入Gitee 如何保持Gitee和GitHub同步更新 如何将GitHub项目一步导入Gitee 方法一: 登陆 Gitee 账号 ...

  5. SpringMVC 配置 & 初识 & 注解 &重定向与转发

    初识 在web.xml 中注册DispatcherServlet <servlet> <servlet-name>springmvc</servlet-name> ...

  6. Error:java: Can‘t generate mapping method with primitive return type.报错

    原因:Spring项目中使用了JPA以及Mybatis–mapper文件注解引错包导致编译错误 解决: 错误:import org.mapstruct.Mapper;正确路径:import org.a ...

  7. 调试F9/F10/F11/F8

    这篇随笔记录来自于实现活动促销页弹幕过程学习: // 页面加载完初始化方法$(function () { GetCustList(); createBarrage(); }) // 某功能的初始化方法 ...

  8. Docker容器(container)详解 (转载自http://c.biancheng.net/view/3150.html)

  9. 为什么说 Gradle 是 Android 进阶绕不去的坎 —— Gradle 系列(1)

    请点赞,你的点赞对我意义重大,满足下我的虚荣心. Hi,我是小彭.本文已收录到 GitHub · Android-NoteBook 中.这里有 Android 进阶成长知识体系,有志同道合的朋友,欢迎 ...

  10. scanf("%d",a[i]+j)为什么不加取地址符号

    为什么我画的地方不加取地址符号? 不要在意标题为什么不加分号,因为长度太长了! 二维数组a[3][5]中,a[3]储存的是下一维的地址,a[1]等同于&a[1][0] 同理,a[1]+1等于& ...