Python语法糖之防蛀牙

因为Python的语法糖,代码简洁优美,越来越喜欢Python了。

人生苦短,请用Python

  • 四则运算不会溢出
  • 乘方,排列组合数内置且不会溢出
  • 支持 x,y = y,x 等简单操作
  • 分号可用来分割,实现一行多句
  • 函数返回值可以是元组,列表,甚至是函数
  • lambda表达式
  • 列表生成式 , 三元操作符: [x//2 if x%2 == 0 else x for x in range(10)]
  • in, enumeratefor循环中使用
  • 列表,元组反向标号从-1 开始数,不用担心越界
    • 字符串的 splitjoin 方法,eval 计算器。
  • map 将一批数据同时用一个函数处理
  • zip 把列表或元组打包
  • argv 直接可用,不用再管 argc
  • 函数可变参数 *args(保存元组), **kwargs(保存字典)
  • yieldyield from 做生成器
  • reduce 函数计算列表内全部乘积等(需要 from functools import reduce)。
  • exec函数 执行python文件中的代码。
  • 用list当函数参数实现传引用(指针)的功能
  • 装饰器
  • * 赋值: a,*b,c = [1,3,4,5,6,3,6]
  • raise ValueError('error type...') 处理异常,哈哈
  • Python 交互界面中:_ 返回的是最近一次的值
  • 任意类有 __init____repr__ 方法(不解释了,顾名思义)
  • 运算符重载运算符重载2

非语法糖: 生成器表达式中, in 子句在声明时执行, 而条件子句则是在运行时执行

装饰器示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def log(func):
def wrapper(*arg, **kw):
print('start %s' %func)
return func(*arg, **kw)
return wrapper

@log
def funcA(arg):
print(arg)

def funB(arg): #注意这里没有@
print('不带@的装饰器: ',end='')
print(arg)

x = funcA # 函数也是对象0.0 骚操作
x('xxxxx')
log(funB(12))

log(funB(12)) 就知道了!因为 log 是 return 的是函数 wrapper ,然后 12 就作为 arg 传入了。

类中装饰器: 自带 @properity @staticmethod @classmethod

To be Continue …

我始终相信极简的代码,优美的代码才是正确的编程姿势。

Python 的坑 : 动态语言火葬场岂是浪得虚名

  • 列表快速复制是浅复制
  • 注意传列表等同转指针
  • 深复制和浅复制 一定要细心
  • list 自带的copy是浅copy
如有帮助,烦请资瓷(一块也是爱0.0)