在Python编程语言中,有许多不为初学者所知的隐藏特性,这些特性在日常编程实践中可能并不显眼,但在特定场景下能显著提高代码的效率和可读性。以下是对文档提及的Python隐藏特性进行的详细解读。 1. 函数参数的解包 函数定义时可以接收不定数量的参数,使用*args和**kwargs可以解包参数列表和字典,并将它们作为独立参数传递给函数。 ```python def foo(x, y): print(x, y) alist = [1, 2] adict = {'x': 1, 'y': 2} foo(*alist) # 输出1 2 foo(**adict) # 输出1 2 ``` 2. 链式比较操作符 Python支持链式比较,可以将多个比较操作连续写在一起。 ```python x = 3 print(1 < x < 5) # 输出True print(4 > x >= 3) # 输出True ``` 3. 函数默认参数的注意事项 使用可变类型(如列表)作为函数默认参数要格外小心,因为默认参数只在函数定义时被初始化一次。 ```python def foo(x=[]): x.append(1) print(x) foo() # 输出[1] foo() # 输出[1, 1] ``` 为了避免这个问题,可以使用None作为默认值,并在函数内部检查。 4. 字典的get方法 字典的get方法可以安全地访问字典中的值,如果键不存在,则返回None或指定的默认值。 ```python sum = {} sum['value'] = sum.get('value', 0) + 1 ``` 5. 带关键字的格式化字符串 Python提供了字符串的格式化方法,可以使用关键字来填充字符串中的占位符。 ```python print("Hello%(name)s!" % {'name': 'James'}) # 输出 HelloJames! print("I am %(age)i years old" % {'age': 18}) # 输出 I am 18 years old ``` 6. for...else语句 在Python中,for循环可以有一个else块,这个else块只有在循环正常结束后才会执行,如果循环因为break被终止,则else块不会执行。 ```python for i in (1, 3, 5): if i % 2 == 0: break else: print("var is always an odd") # 输出 var is always an odd ``` 7. 字典的__missing__方法 在Python 2.5之后,可以定义自己的字典类,并通过__missing__方法来处理字典中不存在的键。 ```python class Dict(dict): def __missing__(self, key): self[key] = [] return self[key] dct = Dict() dct["foo"].append(1) dct["foo"].append(2) print(dct["foo"]) # 输出 [1, 2] ``` 8. 切片操作的步长参数 切片操作不仅可以用于提取序列的一部分,还可以用步长参数来反转序列。 ```python sequence = [1, 2, 3, 4, 5] reversed_sequence = sequence[::-1] # 利用切片的步长参数来反转序列 print(reversed_sequence) # 输出 [5, 4, 3, 2, 1] ``` 9. 另一种字符串连接 在Python中,可以直接使用加号来连接字符串,或者使用反斜杠来连接多行字符串。 ```python Name = "Wang" + "Hong" print(Name) # 输出 WangHong Name = "Wang" \ "Hong" print(Name) # 输出 WangHong ``` 10. 解释器中的"_"变量 Python解释器维护了一个特殊变量"_",它自动引用上一个表达式的结果。 ```python range(4) print(_) # 输出 [0, 1, 2, 3] ``` 11. 嵌套列表推导式 列表推导式可以嵌套使用,这在处理多维数据时非常有用。 ```python matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] flattened = [num for row in matrix for num in row] print(flattened) # 输出 [1, 2, 3, 4, 5, 6, 7, 8, 9] ``` 12. Python描述器 Python描述器是一种协议,用于定义获取和设置对象属性的行为。Python中的函数、方法、属性等都是描述器的应用实例。 13. Zen of Python Python之禅可以通过import this命令来查看,它是一系列关于如何使用Python的建议和哲学。 14. try/except/else/finally Python的异常处理语句提供了else块和finally块,它们在异常处理中有特定的用途。 ```python try: put_***_volts_through_it(parrot) except Voom: print("'E'spining!") else: print("This parrot is no more!") finally: end_sketch() ``` 15. print重定向输出到文件 Python的print函数可以将输出重定向到文件对象中。 ```python print >> open("somefile", "w+"), "Hello World" ``` 16. 省略号 在Python 3中,可以直接使用省略号文法"...",在不同的上下文中它可以有不同的含义。 以上所述的特性都是Python语言在实际使用中的技巧和细节,掌握了这些隐藏特性,对于提升编程技能和编写更优雅的Python代码将大有帮助。
- 粉丝: 8
- 资源: 981
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- AWS B2.1-1-209-96(R2007) 主要用于管道的、在焊接或PWHT条件下(M-1/P-1/S-1,1或2组)1/8到1-1/2英寸厚、ER70S-2及E7018碳钢的药皮焊.pdf
- AWS B5.9-2006 焊接监理的资格认定.pdf
- AWS D1.6D1.6M-2007 不锈钢焊接规范.pdf
- AWS F1.1-1992 对焊接和相关工艺产生中的悬浮空气粒子的抽样方法.PDF
- AWS D14.5-1997 压力机和压力元件焊接规范.pdf
- AWS F4.1-1994 容器和管道焊接和切割准备的推荐安全规程.pdf
- AWS F1.2-1992 焊接和连接过程中测量总烟雾发散和烟雾产生速率的实验室方法.PDF
- AWS QC14-2009 焊接检测者的认证标准.pdf
- BHW35钢热丝TIG堆焊接头组织及性能研究 - .pdf
- BHW35钢焊接接头高温冲击试验分析.pdf
- BSI PD6493 焊接缺陷验收标准若干方法指南(1980年).pdf
- CBT 1164-1986 铝及铝合金焊接试验方法及技术要求.pdf
- CATIA柔性子装配模拟车身焊接夹具运动的设计方法.pdf
- CBT 1216-1992 TA5钛合金焊接技术条件.pdf
- CBT 1216-1992 TA5 钛合金焊接技术条件.pdf
- mlir从onnx和pytorch分别转过来