Q-69:什么是 Python 生成器?
Generator 是一种函数,它让我们指定一个函数,它的作用类似于迭代器,因此可以在“for”循环中使用。
在生成器函数中,yield 关键字替代了 return 语句。
def fn(): return "简单的 Python 函数" def generate(): yield "Python 生成器函数" print(next(generate())) 输出是: Python 生成器函数
Q-70:Python 中的闭包是什么?
Python 闭包是由另一个函数返回的函数对象。我们使用它们来消除代码冗余。
在下面的例子中,我们编写了一个简单的乘法闭包。
def multiply_number(num): def product(number): 'product() here is a closure' return num * number return product num_2 = multiply_number(2) print(num_2(11)) print(num_2(24)) num_6 = multiply_number(6) print(num_6(1)) 输出是: 22 48 6
Q-71:Python 中的装饰器是什么?
Python 装饰器使我们能够动态地向给定对象添加新行为。在下面的示例中,我们编写了一个简单的示例来显示函数执行前后的消息。
def decorator_sample(func): def decorator_hook(*args, **kwargs): print("函数调用前") result = func(*args, **kwargs) print("函数调用后") return result return decorator_hook @decorator_sample def product(x, y): "两个数相乘的函数" return x * y print(product(3, 3)) 输出是: 函数调用前 函数调用后 9
Q-72:你如何在 Python 中创建字典?
让我们以建筑工地统计为例。为此,我们首先需要使用冒号(“:”)拆分键值对。键应该是不可变类型,也就是说,我们将使用不允许在运行时更改的数据类型。我们将从整数、字符串或元组中进行选择。
但是,我们可以采用任何类型的值。为了区分数据对,我们可以使用逗号(“,”)并将整个内容保留在花括号({…})中。
>>> site_stats = {'site': 'tecbeamers.com', 'traffic': 10000, "type": "organic"} >>> type(site_stats) <class 'dict'> >>> print(site_stats) {'type': 'organic', 'site': 'tecbeamers.com', 'traffic': 10000}
Q-73:你如何在 Python 中读取字典?
要从字典中获取数据,我们可以使用键直接访问。我们可以在提到字典对应的变量名后使用方括号 […] 将“key”括起来。
>>> site_stats = {'site': 'tecbeamers.com', 'traffic': 10000, "type": "organic"}
>>> print(site_stats["traffic"])
我们甚至可以调用 get 方法从字典中获取值。它还让我们设置一个默认值。如果缺少密钥,则会发生 KeyError。
>>> site_stats = {'site': 'tecbeamers.com', 'traffic': 10000, "type": "organic"}
>>> print(site_stats.get('site'))
tecbeamers.com
Q-74:如何在 Python 中遍历字典对象?
我们可以使用“for”和“in”循环来遍历字典对象。
>>> site_stats = {'site': 'tecbeamers.com', 'traffic': 10000, "type": "organic"} >>> for k, v in site_stats.items(): print("The key is: %s" % k) print("The value is: %s" % v) print("++++++++++++++++++++++++") 输出是: The key is: type The value is: organic ++++++++++++++++++++++++ The key is: site The value is: tecbeamers.com ++++++++++++++++++++++++ The key is: traffic The value is: 10000 ++++++++++++++++++++++++
Q-75:你如何在 Python 中向字典添加元素?
我们可以通过使用新键修改字典来添加元素,然后为其设置值。
>>> #设置一个空白字典 >>> site_stats = {} >>> site_stats['site'] = 'google.com' >>> site_stats['traffic'] = 10000000000 >>> site_stats['type'] = 'Referral' >>> print(site_stats) {'type': 'Referral', 'site': 'google.com', 'traffic': 10000000000} 我们甚至可以在 update() 方法的帮助下连接两个字典以获得更大的字典。 >>> site_stats['site'] = 'google.co.in' >>> print(site_stats) {'site': 'google.co.in'} >>> site_stats_new = {'traffic': 1000000, "type": "social media"} >>> site_stats.update(site_stats_new) >>> print(site_stats) {'type': 'social media', 'site': 'google.co.in', 'traffic': 1000000}
Q-76:如何在 Python 中删除字典的元素?
我们可以使用 del() 方法删除字典中的键。
>>> site_stats = {'site': 'tecbeamers.com', 'traffic': 10000, "type": "organic"}
>>> del site_stats["type"]
>>> print(site_stats)
{'site': 'google.co.in', 'traffic': 1000000}
我们可以使用的另一种方法是 pop() 函数。它接受密钥作为参数。另外,第二个参数,如果键不存在,我们可以传递一个默认值。
>>> site_stats = {'site': 'tecbeamers.com', 'traffic': 10000, "type": "organic"}
>>> print(site_stats.pop("type", None))
organic
>>> print(site_stats)
{'site': 'tecbeamers.com', 'traffic': 10000}
Q-77:你如何检查字典中键的存在?
我们可以使用 Python 的“in”运算符来测试 dict 对象中是否存在键。
>>> site_stats = {'site': 'tecbeamers.com', 'traffic': 10000, "type": "organic"}
>>> 'site' in site_stats
True
>>> 'traffic' in site_stats
True
>>> "type" in site_stats
True
早些时候,Python 还提供了已被弃用的 has_key() 方法。
回到目录
Q-78:Python 中列表推导式的语法是什么?
列表推导式的签名如下:
[ expression(var) for var in iterable ]
1
例如,下面的代码将返回从 10 到 20 的所有数字并将它们存储在一个列表中。
>>> alist = [var for var in range(10, 20)]
>>> print(alist)
Q-79:Python 中字典理解的语法是什么?
字典的语法与列表推导式的语法相同,但不同之处在于它使用大括号:
{ aKey, itsValue for aKey in iterable }
1
例如,下面的代码将返回所有数字 10 到 20 作为键,并将这些数字的相应平方存储为值。
>>> adict = {var:var**2 for var in range(10, 20)}
>>> print(adict)
Q-80:Python 中生成器表达式的语法是什么?
生成器表达式的语法与列表推导式匹配,但不同之处在于它使用括号:
( expression(var) for var in iterable )
1
(表达式(var) for var in iterable )
例如,下面的代码将创建一个生成器对象,该对象在使用时生成 10 到 20 的值。
>>> (var for var in range(10, 20))
at 0x0000000003668728>
>>> list((var for var in range(10, 20)))