【Python快速上手(九)】

Python快速上手(九)

Python3 推导式、命名空间

Python3 推导式

Python 推导式是一种简洁而强大的语法,用于快速构建数据结构(如列表、字典、集合等),从而使代码更加简洁和易读。Python 支持列表推导式、字典推导式、集合推导式和生成器表达式等几种推导式。

1. 列表推导式

列表推导式允许你快速构建一个列表,通常是通过对现有列表进行操作、筛选和转换。
列表推导式格式为:

[表达式 for 变量 in 列表] 
[out_exp_res for out_exp in input_list]

或者 

[表达式 for 变量 in 列表 if 条件]
[out_exp_res for out_exp in input_list if condition]
out_exp_res:列表生成元素表达式,可以是有返回值的函数。
for out_exp in input_list:迭代 input_list 将 out_exp 传入到 out_exp_res 表达式中。
if condition:条件语句,可以过滤列表中不符合条件的值。
# 构建一个包含 1 到 10 的平方的列表
squares = [x**2 for x in range(1, 11)]

# 构建一个只包含偶数的列表
evens = [x for x in range(1, 11) if x % 2 == 0]
2. 字典推导式

字典推导式允许你快速构建一个字典,通常是通过对现有字典进行操作、筛选和转换。
字典推导基本格式:

{ key_expr: value_expr for value in collection }{ key_expr: value_expr for value in collection if condition }
# 构建一个将列表中的值映射为它们的平方的字典
squares_dict = {x: x**2 for x in range(1, 6)}

# 构建一个将列表中的值映射为它们的奇偶性的字典
parity_dict = {x: 'even' if x % 2 == 0 else 'odd' for x in range(1, 6)}
3. 集合推导式

集合推导式允许你快速构建一个集合,通常是通过对现有集合进行操作、筛选和转换。
集合推导式基本格式:

{ expression for item in Sequence }{ expression for item in Sequence if conditional }
# 构建一个包含 1 到 10 的平方的集合
squares_set = {x**2 for x in range(1, 11)}

# 构建一个只包含偶数的集合
evens_set = {x for x in range(1, 11) if x % 2 == 0}
4. 生成器表达式

生成器表达式与列表推导式类似,但它生成的是一个生成器而不是列表,适用于处理大量数据时,可以节省内存。

# 构建一个生成器,用于生成 1 到 10 的平方
squares_generator = (x**2 for x in range(1, 11))

# 使用生成器表达式生成平方值
for square in squares_generator:
    print(square)
注意事项
  • 推导式使代码更加简洁和可读,但过度使用可能会降低可读性,所以要适度使用。
  • 在处理大量数据时,考虑使用生成器表达式来节省内存。
  • 推导式是 Python 编程中常用的一种技巧,熟练掌握能够提高编码效率。

Python3 命名空间

命名空间(Namespace)是 Python 中用来存放变量名和其对应对象的映射关系的结构,它定义了变量名在程序中的可见范围和生命周期。理解命名空间的概念对于理解 Python 中的变量作用域、模块、类和函数等概念非常重要。

1. 内置命名空间(Built-in Namespace)

内置命名空间包含了 Python 解释器自带的内置函数和内置对象,例如 print()、len()、int、list 等。

# 内置命名空间示例
print(len([1, 2, 3]))  # 调用内置函数 len()
x = int("10")          # 使用内置函数 int()
2. 全局命名空间(Global Namespace)

全局命名空间是指在模块层级定义的命名空间,包含了在模块顶层定义的变量、函数和类等。

# 全局命名空间示例
x = 10                 # 全局变量
def func():
    print("Hello")     # 全局函数
class MyClass:
    pass               # 全局类
3. 局部命名空间(Local Namespace)

局部命名空间是指在函数、方法或类的内部定义的命名空间,包含了在函数内部定义的变量、函数和类等。

# 局部命名空间示例
def func():
    y = 20             # 局部变量
    print(y)
4. 闭包命名空间(Closure Namespace)

闭包命名空间是指内部函数可以访问外部函数中定义的变量的命名空间,这种情况通常出现在闭包(Closure)中。

# 闭包命名空间示例
def outer():
    x = 10
    def inner():
        print(x)       # 内部函数可以访问外部函数的变量 x
    return inner
5. 类命名空间(Class Namespace)

类命名空间是指在类定义中的命名空间,包含了在类定义中定义的类变量、类方法和类属性等。

# 类命名空间示例
class MyClass:
    class_var = 100    # 类变量
    def method(self):
        print("Method") # 类方法
6. 实例命名空间(Instance Namespace)

实例命名空间是指在类的实例化过程中创建的命名空间,包含了实例对象的属性和方法。

# 实例命名空间示例
class MyClass:
    def __init__(self, x):
        self.x = x      # 实例变量
    def method(self):
        print(self.x)   # 实例方法
注意事项
  • Python 中的命名空间是一种映射关系,它定义了变量名和对象之间的对应关系。
  • Python 中的命名空间是有层次关系的,内置命名空间位于最顶层,而局部命名空间位于最底层。
  • 在 Python 中,可以通过各种方式访问不同命名空间中的变量和对象,例如使用全局变量、函数参数、global 关键字等。
  • 23
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值