Python基础入门-风格

  1. 推导式 comprehension
  2. 异常处理 try-except-else-finally
  3. 深浅拷贝
  4. 迭代器
  5. 序列化与反序列化
  6. timeit和Profiling

推导式

  • 列表推导式
    • [x for x in range(10) if X % 2 == 0]
  • 集合推导式
    • {x for x in range(10) if X % 2 == 0}
  • 字典推导式
    • {x: x**2 for x in range(10) if x % 2 == 0}
  • 生成器表达式
    • (x for x in range(10) if x % 2 == 0)

异常处理

  • Exception 常规错误父类
    • BaseException 内置错误的父类
  • tr-except
    	try:	
    		测试执行代码...
    	except Exception:
    		异常处理流程...
    	else:
    		...
    	finally:
    		...
    
  • 自定义异常 ?

深浅拷贝

b=100
a=b
此时的赋值只是将变量a和b的指向到了存储100的地址

当a为列表时,更改a的值会同时更改b的值,具体原因待明确,应该和list的实现有关

copy()只针对当前变量的地址,针对变量内部的隐形指向地址不做更改
deepcopy()可以实现新地址的拷贝

	from copy import copy,deepcopy
	a=[1,["a","b"]]
	b=a
	c=copy(a)
	d=deepcopy(a)

	a.append(5)
	a[1].append("c")
	#a [1,['a','b','c'],5]
	#b [1,['a','b','c'],5]
	#c [1,['a','b','c']]
	#d [1,['a','b']]

迭代器

返回可迭代对象,用for循环迭代或者复制给list

  • map()
  • range()

序列化与反序列化

  • 将数据以JSON格式保存到文件中(使用Unicode文本)
    • 将对象在某一状态下“冻结”,以二进制形式写入文件,保存到硬盘中
  • 反序列化
	import pickle #二进制文件转换
	a=[1,2,3]
	b=pickle.dumps(a)
	print(b) #b'\x80\x03]q\x00(K\x01K\x02K\x03e.'
	c=pickle.loads(b)
	print(a==c) #true

timeit和Profiling

  • 性能分析Profiling
    • CPU
    • GPU
  • 计算方法
    • from time import timeit #系统时间
      • from time import clock #windows
       	from time import time
       	start =time()
       	s=0
       	for i in range(100000):
       		s=s+i
       	end= time()
       	print("time:%.4f s" %(end-start))
      
    • from timeit import timeit #timeit 完成任务的时间,不包括后续结尾工作
      from timeit import timeit
      print(timeit('for i in range(20):print i,globals=globals()))
      
    • import profile
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值