Python学习笔记--如何写出 Pythonic 的代码?Python 之美(干货满满)

前言

我们知道 python 是一种非常强大的解释性语言,它有非常强大的语言特性和库。

一、Python 特点

  1. 简单易学
  2. 高动态性
  3. 开源免费
  4. 可移植
  5. 胶水语言,可与其他语言交互

二、与 C++ 对比

  1. 简单、易上手
  2. 语法简洁优雅,表达能力强,开发效率高
  3. 脚本语言,可以动态更新

三、Python的缺点

  1. 运行速度慢
  2. 内存消耗高
  3. 可控性差
  4. 多线程鸡肋
  5. 不支持多个虚拟机

四、Pythonic 代码实践

让我们一起来学习下如何写出 Pythonic 的代码,你就会感受到 Python 的便捷、强大之处了。

1. 数组遍历

NonPythonic

arr1 = [1, 2, 3]
for index in range(len(arr1))
	print(arr1[index])

Pythonic

arr1 = [1, 2, 3]
for num in arr1:
	print(num)

2. 数组遍历

NonPythonic

arr1 = [1, 2, 3]
for index in range(len(arr1))
	print(index, arr1[index])

Pythonic

arr1 = [1, 2, 3]
for index, num in enumerate(arr1):
	print(index, num)

3. 数组遍历

NonPythonic

arr1 = [1, 2, 3]
arr2 = [4, 5, 6]
for index in range(len(arr1))
	print(arr1[index], arr2[index])

Pythonic

arr1 = [1, 2, 3]
arr2 = [4, 5, 6]
for num1, num2 in zip(arr1, arr2)
	print(num1, num2)

4. 属性判断

NonPythonic

flag = False
obj = None
if flag == True:
	do_sth()
if flag == False:
	do_sth()
if obj is not None:
	do_sth()
if obj is None:
	do_sth()

Pythonic

flag = False
obj = None
if flag:
	do_sth()
if not flag:
	do_sth
if obj:
	do_sth()
if not obj:
	do_sth

5. 值交换

NonPythonic

temp = a
a = b
b = temp

Pythonic

a, b = b, a

6. 三元符

NonPythonic

if x > 100:
	flag = 'big num'
else:
	flag = 'small num'

Pythonic

flag = 'big num' if x > 100 else 'small num'

7. for else

NonPythonic

find = False
for x in arr:
	if x == 100:
		find = True
		print('find 100')
		break
if not find:
	print('not find')

Pythonic

for x in arr:
	if x == 100:
		print('find 100')
		break
else:
	print('not find')

8. 列表生成

NonPythonic

arr = []
for i in range(10):
    arr.append(i * i)

Pythonic

arr = [ i * i for in range(10)]

9. 列表生成

NonPythonic

arr = [1, 3, 5, 6, 9]
filter_arr = []
for i in range(10):
	if i > 5:
		filter_arr.append(i)

Pythonic

arr = [1, 3, 5, 6, 9]
filter_arr = [i for i in arr if arr > 5]

10. 列表生成

NonPythonic

square_dct = {
    
    }
for i in range(10):
	square_dct[i] = i * i

Pythonic

square_dct={
    
     i : i * i for i in range(10)}

11. 字符串拼接

NonPythonic

arr = ['my', 'name', 'is', 'XXX']
result = ''
for word in arr:
    result += word
    result += ' '

Pythonic

arr = ['my', 'name', 'is', 'XXX']
result = ' '.join(arr)

12. Tuple unpack

NonPythonic

arr = ('iPhone', 5000, False)
name = arr[0]
price = arr[1]
sell = arr[2]

Pythonic

arr = ('iPhone', 5000, False)
name, price, sell = arr

13. 切片

NonPythonic

def get_lst_range(arr, start, end):
    range_lst = []
    for i in range(start, end):
        range_lst.append(arr[start])
    return range_lst

Pythonic

arr[start : end]

猜你喜欢

转载自blog.csdn.net/qq_52855744/article/details/132316052