Python-封装与解构

1、封装:

  定义:

    将多个值用括号分割,组合在一起

    本质上,返回一个元组,只是省掉了小括号   

1 In [99]: t = 1,2,3 # 封装成元组! t = (1,2,3)
2
3 In [100]: t
4 Out[100]: (1, 2, 3)
1 a = 4
2 b = 5
3 tmp = a
4 a = b
5 b = tmp
6 等价于
7 a, b = b, a
8
9 注:但并不是真正的等价,这里右侧是一个封装的元组,对左侧使用了解构

2、解构:

  把线性结构的元素解开,并顺序的赋值给其他变量(事实上集合对象也可以)非线性解构也能解构:set()

  左边接纳的变量数要和 右边解开的元素个数一致  

 1 In [12]: a,b,c,d = (1,2,3,4) # 解构
 2
 3     In [13]: a,b,c,d #封装
 4     Out[13]: (1, 2, 3, 4)
 5
 6
 7         非线性解构也能解构:set()
 8
 9     In [22]: a,b,*c,tail,end= set(range(10))
10     In [28]: a,b,*c= set(range(10))
11
12
13     In [22]: a,b,*c,tail,end= set(range(10))# 尽量将多的元素赋值给 *c
14     In [23]: c
15     Out[23]: [2, 3, 4, 5, 6, 7] # 列表
16
17     In [24]: a
18     Out[24]: 0
19
20     In [25]: b
21     Out[25]: 1
22
23     In [26]: tail
24     Out[26]: 8
25
26     In [27]: end
27     Out[27]: 9
28
29
30     In [30]: *c,a= set(range(10))  # *c不能单独存在 *c = set(range(10))
31
32     In [31]: c
33     Out[31]: [0, 1, 2, 3, 4, 5, 6, 7, 8]
34
35     In [32]:
36
37     In [32]: a
38     Out[32]: 9
39
40     In [34]: [a,b] = (2,3) # 最好两侧要一致的数据结构

      In [102]: a
      Out[102]: 2

      In [103]: b
      Out[103]: 3

3、丢弃变量:

  这是一个管理,是一个不成文的约定,不是标准

  如果不关心一个变量,就可以定义改变量的名字为 _   (下划线)

  _ 是一个合法的标识符,也可以作为一个有效的变量使用,但是定义成下划线就是希望不要被使用,除非你明确的知道这个数据需要使用

    注:但是利用上一次的结果 _  的下划线,只能在IPython中使用

 1 In [105]: ls = [9,8,7,5]
 2
 3 In [106]: first,*second = ls
 4
 5 In [107]: head,*_,tail = ls
 6
 7 In [108]: print(head)
 8 9
 9
10 In [109]: print(tail)
11 5
12
13 In [110]: print(_)
14 [8, 7]
 1 In [111]: ls
 2 Out[111]: [9, 8, 7, 5]
 3
 4 In [112]: _,*_,tail = ls #后面的_ 覆盖了前面的_
 5
 6 In [113]: print(_)
 7 [8, 7]
 8
 9 In [114]: print(tail)
10 5
11
12 In [115]: print(_)
13 [8, 7]

  总结:

    _ 这个变量本身无任何语义。没有任何可读性,所以不是用来给人使用的

    Python中很多库,搜使用这个变量,使用广泛。请不要在不明确变量作用域 的情况下,使用_ 导致和库中 _ 冲突。

1 取出[1,(2,3,4),5]的4
2
3 In [117]: _,(_,_,c),_ = [1,(2,3,4),5]
4
5 In [118]: c
6 Out[118]: 4
 1 冒泡法中的封装、解构
 2
 3 l = [1,9,8,7,6,4,3,2]
 4
 5 for i in range(len(l)):
 6     flag = False
 7     for j in range(len(l)-i -1):
 8         if l[j] > l[j+1]:
 9             l[j],l[j+1] = l[j+1],l[j]
10             flag = True
11     if not flag:
12         break
13 print(l)
1 提取‘java_home=/usr/bin‘ 中的环境变量名和路径
2
3 s = ‘java_home=/usr/bin=/a/c/v‘
4
5 env,_,path=s.partition(‘=‘) # 最好使用partition 如果后面还有等号,用split()必须指定次数
6
7 path

原文地址:https://www.cnblogs.com/JerryZao/p/9471605.html

时间: 2024-10-31 19:35:58

Python-封装与解构的相关文章

Python封装及解构

python封装及解构 Python的封装与其他语言的封装箱不同,python中没有装箱的概念,一切皆对象 将多个值使用逗号进行分割,本质上是返回元组 In [1]: a = 1,2 In [2]: type(a) Out[2]: tuple In [3]: a Out[3]: (1, 2) 封装 在进行交换的时候,已经被封装为元组 在赋值的过程中,看似什么都没有做,但是在右值将其封装为元组,因为其值不变 In [9]: a = 1,2 In [10]: a?? Type:       tupl

封装与解构

在IPython中可以使用 %timeit  计算程序运行时间 1.单行: %timeit  statement 2.多行:%%timeit 例如: def asfd(n): # 定义一个函数 for i in range(n): return(i) 单行:%timeit(20) 多行:%%timeit  m=20 asfd(m)   封装与解构: 封装: #  等号右边多个值使用逗号分割组合返回一个元组 例如: t = 1,2,3 print(t) 为(1,2,3) 解构: # 把线性结构(非

python的封装与解构

封装 将多个值使用逗号分割,组合在一起 本质上,返回一个元祖,只是省掉了小括号 python特有语法,被很多语言学习和借鉴 t1 = (1,2) #定义为元祖 t2 = 1,2 #将1和2封装成元祖 print(type(t1)) print(type(t2)) 返回类型都为元组: <class 'tuple'> <class 'tuple'> 使用方法: a = 4 b = 5 temp = a a = b b = temp # 等价于 a,b = b,a #等号右边使用了封装,

python内置函数封装、解构

一.封装 将多个值使用逗号分割,组合在一起,本质上返回一个元组,只是省掉了小括号 python特有语法,被很多言语学习和借鉴 二.解构 把线性结构的元素解开,并顺序的赋给其他变量 左边接纳的变量数要和右边解开的元素个数一致 举例: >>> lst = [3,5]  >>> a,b = lst  >>> print(a,b)  3 5  >>> 三.python3版本的解构 使用*变量名接收,但不能单独使用 被*变量名收集后组成一个列表

封装解构,集合,字典,内建函数和简单选择排序相关知识及习题

封装 将多个值使用逗号分割,组合在一起本质上,返回一个元组,只是省掉了小括号python特有语法,被很多语言学习和借鉴 解构 把线性结构的元素解开,并顺序的赋给其它变量左边接纳的变量数要和右边解开的元素个数一致 转置矩阵 方阵利用封装解构完成代码矩阵先开辟空间再利用封装解构完成代码利用enumerate函数得到索引值完成代码 集合 可变的 . 无序的 . 不重复 的元素的集合set的元素要求必须可以hash元素不可以索引set可以迭代set增加 add(elem)增加一个元素到set中,如果元素

python 函数、参数及参数解构

函数 数学定义 y=f(x), y是x函数,x是自变量.y=f(x0,x1...xn) Python函数 由若干语句组成的语句块,函数名称,参数列表构成,它是组织代码的最小单位 完成一定的功能 函数作用 结构化编程对代码的最基本的封装,一般按照功能组织一段代码 封装的目的为了复用,减少冗余代码 代码更加简洁美观,可读易懂 函数分类 内建函数,如max(),reversed()等 库函数,如math.ceil()等 函数定义.调用 def语句定义函数 def 函数名(参数列表): 函数体(代码块)

Python封装和结构

在Python中有封装和解构的概念.封装 ——是将将多个值使用逗号分割,组合在一起 .本质上,返回一个元组,只是省掉了小括号.这是Python特有的概念,现在被很多语言借鉴. a = (1,2)#元组 b = 1,2#元组 print(type(a)) print(type(b)) 结果为: <class 'tuple'> <class 'tuple'> 解构是把线性结构(也可以是非线性结构)的元素解开,并顺序的赋给其它变量,应该注意的是左边接纳的变量数要和右边解开的元素个数一致.

ES6--变量的声明及解构赋值

ES6的目标是使得JavaScript语言可以用来编写大型的复杂的应用程序,成为企业级开发语言:该标准已于2015年6月17日正式发布.但是真正的普及我认为还得需要一段时间,然而这并不是理由让我们不去了解ES6.更重要的一点是,Google公司的V8引擎已经部署了ES6部分特性,对于NodeJS的开发者来说应该熟练掌握. 在浏览器没有全面支持的情况下,Google公司推出了Traceur转码器(https://github.com/google/traceur-compiler),可将ES6编译

C++对象模型——构造,解构,拷贝语意学(第五章)

第5章 构造,解构,拷贝语意学 (Semantics of Construction, Destruction, and Copy) 考虑下面这个abstract base class 声明: class Abstract_base { public: virtual ~Abstract_base() = 0; virtual void interface() const = 0; virtual const char * mumble() const { return _mumble; } p