今日内容:

  • 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. M1事后总结报告

    设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 解决外卖信息的碎片化和多平台化,通过信息整合的方式来给用户提供一个更优惠更快速方便的外卖平台. 我们的客 ...

  2. 调研ios开发环境的演变

    一:ios的发展演变: 以下两句为百度百科IOS,可自行查阅,不多赘述,就Ctrl+c,Ctrl+v两句表示一下. 2007年1月9日苹果公司在Macworld展览会上公布,随后于同年的6月发布第一版 ...

  3. beta1

    组长:吴晓晖 过去两天完成了哪些任务: 代码重构进行中,界面,预计两个beta单位完成 展示GitHub当日代码/文档签入记录 接下来的计划 更加人性化的推荐算法 还剩下哪些任务 有哪些困难 有哪些收 ...

  4. Alpha 冲刺九

    团队成员 051601135 岳冠宇 051604103 陈思孝 031602629 刘意晗 031602248 郑智文 031602234 王淇 会议照片 项目燃尽图 项目进展 完善各自部分 项目描 ...

  5. OpenCV学习(23) 使用kmeans算法实现图像分割

          本章我们用kmeans算法实现一个简单图像的分割.如下面的图像,我们知道图像分3个簇,背景.白色的任务,红色的丝带以及帽子.       Mat img = cv::imread(&quo ...

  6. 10缓冲流、转换流、序列化流、Files

    十.流 10.1 缓冲流 10.1.1 概述                 缓冲流是对4个基本的FileXxx流的增强,所以也是4个流,按照数据类型进行分类                     ...

  7. NetBeans无法使用svn相关功能

    本来中NetBeans使用subversion功能只要下载过subversion客户端就可以直接使用了,我也一直是这样的,可是今天忽然的不能用了,发现问题是因为我在文件中使用subversion的比较 ...

  8. HGOI NOIP模拟4 题解

    NOIP国庆模拟赛Day5 题解 T1 马里奥 题目描述 马里奥将要参加 NOIP 了,他现在在一片大陆上,这个大陆上有着许多浮空岛,并且其中一座浮空岛上有一个传送门,马里奥想要到达传送门从而前往 N ...

  9. 在Mac上快速Kill掉Tomcat

    最近IDEA总是会莫名其妙的挂掉,而挂掉之后通过IDEA开启的Tomcat却没有同步给关掉,等我再在IDEA里要启动的时候,就不行了.... 这时,就需要手动去kill掉tomcat,每次先 ps - ...

  10. mysql主主同步设置

    mysql主主同步设置 主主同步设置是同等的地位,所以以下操作在两台机器上都需要进行而且操作是相同的. 服务器 服务器代号 IP hostname A 192.168.70.128 Debian1 B ...