今日内容:

  • 1.三元表达式
  • 2.列表、元组生成式 | 字典生成式
  • 3.递归
  • 4.匿名函数
  • 5.内置函数

一、三元表达式

三元运算符:就是 if...else... 语法糖
前提:if 和 else
# 三元运算符的结果不一定要与条件有直接性关系
res = 'b为较小的数' if a > b else 'a为较小的数' # 求小值
print(res) # 案例:得到两个数中较大的值
a = 20
b = 30 res = a if a > b else b
print(res)

二、列表、元组生成式、字典生成式

# 列表(元组)推导式
dic = {'a': 1, 'b': 2, 'c': 3}  # =>[('a',1),('b',2),('c',2)]
res = [(k, v) for k, v in dic.items()]
print(res)
# 元组推导式
res = ((k, v)for k, v in dic.items())
print(tuple(res))
# 字典推导式
ls = [('a', 1), ('b', 2), ('c', 3)]  # => {'a': 1, 'b': 2, 'c': 3}
res = {k: v for k, v in ls}
print(res)

三、递归

回溯:询问答案的过程
递推:推出答案的过程 前提:
回溯到一个有具体结果的值,开始递推
回溯与递推的条件要有规律
递归本质:函数的自我调用(自己调自己)

四、匿名函数

没有名字的函数
语法:lambda 参数列表:一个返回值表达式 匿名函数:没有函数名,没有函数体,只有有一个返回值
关键字:lambda | 参数列表省略()| 返回值return关键字也省略 应用场景:
1.匿名函数函数地址可以被一个变量接收,该变量就可以作为函数名来使用,但就违背了匿名初衷
2.结合内置函数来使用:内置函数某些参数需要一个函数地址,可以复制一个有名函数名,也可以直接赋值匿名函数

五、内置函数

后面涉及的内容:

# classmethod() :把一个方法封装成类方法。一个类方法把类自己作为第一个实参,就像一个实例方法把实例自己作为第一个实参。
# staticmenthod():将方法转换为静态方法。静态方法不会接收隐式的第一个参数。
# super()
# object() # 反射
# getattr()
# setattr()
# delattr()

后面内容

官方文档:https://docs.python.org/zh-cn/3.7/library/functions.html
 重点:

 1.名称空间
globals():返回表示当前全局符号表的字典。
locals():更新并返回一个包含了当前局部作用域中符号表的字典。 exec(object[, globals[, locals]]):
这个函数支持动态执行 Python 代码。
object 必须是字符串或者代码对象。如果是字符串,那么该字符串将被解析为一系列 Python 语句并执行(除非发生语法错误)。
[1] 如果是代码对象,它将被直接执行。
在任何情况下,被执行的代码都需要和文件输入一样是有效的(见参考手册中关于文件输入的章节)。
请注意即使在传递给 exec() 函数的代码的上下文中,return 和 yield 语句也不能在函数定义之外使用。
该函数返回值是 None 。 eval(expression, globals=None, locals=None)
实参是一个字符串,以及可选的 globals 和 locals。globals 实参必须是一个字典。locals 可以是任何映射对象。
expression 参数会作为一个 Python 表达式(从技术上说是一个条件列表)被解析并求值,使用 globals 和 locals 字典作为全局和局部命名空间。 如果 globals 字典存在且不包含以 __builtins__ 为键的值,则会在解析 expression 之前插入以此为键的对内置模块 builtins 的字典的引用。 这意味着 expression 通常具有对标准 builtins 模块的完全访问权限且受限的环境会被传播。 如果省略 locals 字典则其默认值为 globals 字典。
如果两个字典同时省略,表达式会在 eval() 被调用的环境中执行。
返回值为表达式求值的结果。 语法错误将作为异常被报告。 enumerate():
返回一个枚举对象。iterable 必须是一个序列,或 iterator,或其他支持迭代的对象。
enumerate() 返回的迭代器的 __next__() 方法返回一个元组,
里面包含一个计数值(从 start 开始,默认为 0)和通过迭代 iterable 获得的值。 isinstance():
如果 object 实参是 classinfo 实参的实例,或者是(直接、间接或 虚拟)子类的实例,则返回 true。
如果 object 不是给定类型的对象,函数始终返回 false。
如果 classinfo 是对象类型(或多个递归元组)的元组,如果 object 是其中的任何一个的实例则返回 true。
如果 classinfo 既不是类型,也不是类型元组或类型的递归元组,那么会触发 TypeError 异常。 len():
返回对象的长度(元素个数)。
实参可以是序列(如 string、bytes、tuple、list 或 range 等)或集合(如 dictionary、set 或 frozen set 等)。 max((arg1, arg2, *args[, key]):
返回可迭代对象中最大的元素,或者返回两个及以上实参中最大的。
如果只提供了一个位置参数,它必须是非空 iterable,返回可迭代对象中最大的元素;
如果提供了两个及以上的位置参数,则返回最大的位置参数。 有两个可选只能用关键字的实参。
key 实参指定排序函数用的参数,如传给 list.sort() 的。
default 实参是当可迭代对象为空时返回的值。
如果可迭代对象为空,并且没有给 default ,则会触发 ValueError。 如果有多个最大元素,则此函数将返回第一个找到的。 min(arg1, arg2, *args[, key]):
返回可迭代对象中最小的元素,或者返回两个及以上实参中最小的。
如果只提供了一个位置参数,它必须是 iterable,返回可迭代对象中最小的元素;
如果提供了两个及以上的位置参数,则返回最小的位置参数。 有两个可选只能用关键字的实参。key 实参指定排序函数用的参数,如传给 list.sort() 的。
default 实参是当可迭代对象为空时返回的值。
如果可迭代对象为空,并且没有给 default ,则会触发 ValueError。 - 运算
abs(x) : 返回一个数的绝对值。实参可以是整数或浮点数。如果实参是一个复数,返回它的模。 pow(x, y[, z]) # 返回 x 的 y 次幂;如果 z 存在,则对 z 取余(比直接 pow(x, y) % z 计算更高效)。两个参数形式的 pow(x, y) 等价于幂运算符: x**y。 sum(iterable[, start]) # 从 start 开始自左向右对 iterable 中的项求和并返回总计值。 start 默认为 0。 iterable 的项通常为数字,开始值则不允许为字符串。 divmod(a, b) # 它将两个(非复数)数字作为实参,并在执行整数除法时返回一对商和余数。
对于混合操作数类型,适用双目算术运算符的规则。对于整数,结果和 (a // b, a % b) 一致。
对于浮点数,结果是 (q, a % b) ,q 通常是 math.floor(a / b) 但可能会比 1 小。
在任何情况下, q * b + a % b 和 a 基本相等;如果 a % b 非零,它的符号和 b 一样,并且 0 <= abs(a % b) < abs(b) 。 集合判断操作 # all(iterable) # 如果 iterable 的所有元素为真(或迭代器为空),返回 True 。 any(iterable) # 如果*iterable*的任一元素为真则返回``True``。如果迭代器为空,返回``False``。 lambda x: x % 2 == 0, [1, 2, 3, 4, 5]) # 偶数才能通过过滤 - 原义字符串 ascii(object) # 就像函数 repr(),返回一个对象可打印的字符串,
但是 repr() 返回的字符串中非 ASCII 编码的字符,会使用 \x、\u 和 \U 来转义。
生成的字符串和 Python 2 的 repr() 返回的结果相似。 repr(object) # 返回包含一个对象的可打印表示形式的字符串。
对于许多类型来说,该函数会尝试返回的字符串将会与该对象被传递给 eval() 时所生成的对象具有相同的值,
在其他情况下表示形式会是一个括在尖括号中的字符串,
其中包含对象类型的名称与通常包括对象名称和地址的附加信息。
类可以通过定义 __repr__() 方法来控制此函数为它的实例所返回的内容。 - 进制
bin(x) # 将一个整数转变为一个前缀为“0b”的二进制字符串。
结果是一个合法的 Python 表达式。
如果 x 不是 Python 的 int 对象,那它需要定义 __index__() 方法返回一个整数。 oct(x) # 将一个整数转变为一个前缀为“0o”的八进制字符串。结果是一个合法的 Python 表达式。
如果 x 不是 Python 的 int 对象,那它需要定义 __index__() 方法返回一个整数。 hex(x) # 将整数转换为以“0x”为前缀的小写十六进制字符串。
如果 x 不是 Python int 对象,则必须定义返回整数的 __index__() 方法。 - 类型转化
bool() # 返回一个布尔值,True 或者 False。
str() # 返回一个 str 版本的 object 。
bytes() # 返回一个 str 版本的 object 。
chr() # 返回 Unicode 码位为整数 i 的字符的字符串格式。例如,chr(97) 返回字符串 'a',chr(8364) 返回字符串 '€'。这是 ord() 的逆函数。
ord(c) # 对表示单个 Unicode 字符的字符串,返回代表它 Unicode 码点的整数。例如 ord('a') 返回整数 97, ord('€') (欧元符合)返回 8364 。这是 chr() 的逆函数。 - 补充 filter(function, iterable)
用 iterable 中函数 function 返回真的那些元素,构建一个新的迭代器。iterable 可以是一个序列,一个支持迭代的容器,或一个迭代器。如果 function 是 None ,则会假设它是一个身份函数,即 iterable 中所有返回假的元素会被移除。 map(function, iterable, ...)
产生一个将 function 应用于迭代器中所有元素并返回结果的迭代器。如果传递了额外的 iterable 实参,function 必须接受相同个数的实参,并使用所有迭代器中并行获取的元素。当有多个迭代器时,最短的迭代器耗尽则整个迭代结束。 sorted(iterable, *, key=None, reverse=False)
根据 iterable 中的项返回一个新的已排序列表。 具有两个可选参数,它们都必须指定为关键字参数。 key 指定带有单个参数的函数,用于从 iterable 的每个元素中提取用于比较的键 (例如 key=str.lower)。 默认值为 None (直接比较元素)。 reverse 为一个布尔值。 如果设为 True,则每个列表元素将按反向顺序比较进行排序。 repr(object)
返回包含一个对象的可打印表示形式的字符串。
对于许多类型来说,该函数会尝试返回的字符串将会与该对象被传递给 eval() 时所生成的对象具有相同的值,在其他情况下表示形式会是一个括在尖括号中的字符串,其中包含对象类型的名称与通常包括对象名称和地址的附加信息。
类可以通过定义 __repr__() 方法来控制此函数为它的实例所返回的内容。
 

 

Python 入门基础12 --函数基础5 匿名函数、内置函数的更多相关文章

  1. python之三元表达式与生成式与匿名与内置函数(部分)

    目录 三元表达式 各种生成式 列表生成式(可同样作用于集合) 字典生成式 匿名函数 重要内置函数 map() zip() filter() reduce() 常见内置函数(部分) 三元表达式 三元表达 ...

  2. python基础12_匿名_内置函数

    一个二分查找的示例: # 二分查找 示例 data = [1, 3, 6, 7, 9, 12, 14, 16, 17, 18, 20, 21, 22, 23, 30, 32, 33, 35, 36, ...

  3. Day5 函数递归,匿名、内置行数,模块和包,开发规范

    一.递归与二分法 一.递归 1.递归调用的定义 递归调用:在调用一个函数的过程中,直接或间接地调用了函数本身 2.递归分为两类:直接与间接 #直接 def func(): print('from fu ...

  4. 学习Python函数笔记之二(内置函数)

    ---恢复内容开始--- 1.内置函数:取绝对值函数abs() 2.内置函数:取最大值max(),取最小值min() 3.内置函数:len()是获取序列的长度 4.内置函数:divmod(x,y),返 ...

  5. Python函数04/生成器/推导式/内置函数

    Python函数04/生成器/推导式/内置函数 目录 Python函数04/生成器/推导式/内置函数 内容大纲 1.生成器 2.推导式 3.内置函数(一) 4.今日总结 5.今日练习 内容大纲 1.生 ...

  6. python基础之递归,匿名,内置函数

    递归函数: 什么是递归函数? 函数递归调用:在调用一个函数的过程中,又直接或间接地调用了该函数本身. 递归必须要有两个明确的阶段: ①递推:一层一层递归调用下去,强调:每进入下一层问题规模减少 ②回溯 ...

  7. Day3 - Python基础3 函数基本、递归函数、内置函数

    本节内容 1. 函数基本语法及特性 2. 参数与局部变量 2.2. 函数变量作用域 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 1. 函数基本语法及 ...

  8. python 基础篇 14 程程器表达式 内置函数

    昨日内容回顾    可迭代对象:        内部含有__iter__方法的就是可迭代对象.        可迭代对象不能取值,因为内部不含有__next__方法.     可迭代对象 ---> ...

  9. python函数(6):内置函数和匿名函数

    我们学了这么多关于函数的知识基本都是自己定义自己使用,那么我们之前用的一些函数并不是我们自己定义的比如说print(),len(),type()等等,它们是哪来的呢? 一.内置函数 由python内部 ...

  10. Python-老男孩-01_基础_文件IO_函数_yield_三元_常用内置函数_反射_random_md5_序列化_正则表达式_time

    Python2.7 缩进统一: 约定  常量 大写 , 变量  小写 判断一个变量在内存中的地址,也能看出是不是一个值 id()函数 >>> x = 'abc' >>&g ...

随机推荐

  1. 《linux内核分析》作业一:分析汇编代码

    通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的(王海宁) 姓名:王海宁                             学号:20135103 课程:<Linux内核分析& ...

  2. scrapy 爬虫怎么写入日志和保存信息

    写入日志: 首先我的爬虫 name= article scrapy crawl article -s LOG_FILE=wiki.log 输出为不同格式: scrapy crawl article - ...

  3. ns3的输入输出奥秘(一) LOGGING系统

    1.LOGGING系统 (1)在我们之前对C++的理解,输出好像就是cout,然而 以myfirst.cc为例子 在我们前面的编写的代码中并没有出现cout,那他是如何输出. 可以回忆一下 LogCo ...

  4. jvm垃圾回收机制和常见算法

    这是朋友给的面试题里边的,具体地址已经找不到,只能对原作者说声抱歉了: 理论上来讲sun公司只定义了垃圾回收机制规则,而步局限于其实现算法,因此不同厂商生产的虚拟机采用的算法也不尽相同. GC(Gar ...

  5. node之post提交上传

    post文件上传 multer 中间件 在node中 express为了性能考虑采用按需加载的方式,引入各种中间件来完成需求, 平时解析post上传数据时候,是用body-parse.但这个中间件有缺 ...

  6. Redis常见面题

    介绍:Redis 是一个开源的使用 ANSI C 语言编写.遵守 BSD 协议.支持网络.可基于内存亦可持久化的日志型.Key-Value 数据库,并提供多种语言的 API的非关系型数据库. 传统数据 ...

  7. c#public、private、protected、internal、protected internal

    public 公有访问.不受任何限制.private 私有访问.只限于本类成员访问,子类,实例都不能访问.protected 保护访问.只限于本类和子类访问,实例不能访问.internal 内部访问. ...

  8. 当数据库字段与model字段规则不一致时候 需要在xml里面手工转换

  9. 洛谷P4172 [WC2006]水管局长 (LCT,最小生成树)

    洛谷题目传送门 思路分析 在一个图中,要求路径上最大边边权最小,就不难想到最小生成树.而题目中有删边的操作,那肯定是要动态维护啦.直接上LCT维护边权最小值(可以参考一下蒟蒻的Blog) 这时候令人头 ...

  10. 【题解】 [ZJOI2012]灾难 (拓扑排序+LCA)

    懒得复制,戳我戳我 Solution: 这题思路很神奇,首先你要知道这个毁灭树是怎么保证实现的:一句话就是如果该节点要被破坏,他的所有父节点就要被破坏,也就只要所有父节点的LCA被破坏就可以,所以我们 ...