你所不知道的python特点及语句
来源:互联网 发布:塞班软件下载5233 编辑:程序博客网 时间:2024/06/17 15:26
1.自定义可选参数
方法1:自定义可选参数
def function(arg1="",arg2=""): print "arg1: {0}".format(arg1) print "arg2: {0}".format(arg2)function("Hello", "World")# prints args1: Hello# prints args2: Worldfunction()# prints args1:# prints args2
方法2:元组实现,类似java func(Object arg…)
def foo(*args): # just use "*" to collect all remaining arguments into a tuple numargs = len(args) print "Number of arguments: {0}".format(numargs) for i, x in enumerate(args): print "Argument {0} is: {1}".format(i,x)foo()# Number of arguments: 0foo("hello")# Number of arguments: 1# Argument 0 is: hellofoo("hello","World","Again")# Number of arguments: 3# Argument 0 is: hello# Argument 1 is: World# Argument 2 is: Again
使用Glob()查找文件
Glob()可以说是一个更强大版本的listdir()函数(它可以让你通过使用模式匹配来搜索文件)
#模糊搜索import glob# get all py filesfiles = glob.glob('*.py')print files# Output# ['arg.py', 'g.py', 'shut.py', 'test.py']
多类型搜索
import itertools as it, globdef multiple_file_types(*patterns): return it.chain.from_iterable(glob.glob(pattern) for pattern in patterns)for filename in multiple_file_types("*.txt", "*.py"): # add as many filetype arguements print filename# output#=========## test.txt# arg.py# g.py# shut.py# test.py
调用realpath()函数显示绝对路径
mport itertools as it, glob, osdef multiple_file_types(*patterns): return it.chain.from_iterable(glob.glob(pattern) for pattern in patterns)for filename in multiple_file_types("*.txt", "*.py"): # add as many filetype arguements realpath = os.path.realpath(filename) print realpath# output#=========## C:\xxx\pyfunc\test.txt# C:\xxx\pyfunc\arg.py# C:\xxx\pyfunc\g.py# C:\xxx\pyfunc\shut.py# C:\xxx\pyfunc\test.py
生成唯一id
1.UUID
import uuidresult = uuid.uuid1()print result# output => various attempts# 9e177ec0-65b6-11e3-b2d0-e4d53dfcf61b# be57b880-65b6-11e3-a04d-e4d53dfcf61b# c3b2b90f-65b6-11e3-8c86-e4d53dfcf61b
2.mac地址+key+data
import hmac,hashlibkey='1'data='a'print hmac.new(key, data, hashlib.sha256).hexdigest()m = hashlib.sha1()m.update("The quick brown fox jumps over the lazy dog")print m.hexdigest()# c6e693d0b35805080632bc2469e1154a8d1072a86557778c27a01329630f8917# 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12
序列号
1.python以前的序列化方法:
import picklevariable = ['hello', 42, [1,'two'],'apple']# serialize contentfile = open('serial.txt','w')serialized_obj = pickle.dumps(variable)file.write(serialized_obj)file.close()# unserialize to produce original contenttarget = open('serial.txt','r')myObj = pickle.load(target)print serialized_objprint myObj#output# (lp0# S'hello'# p1# aI42# a(lp2# I1# aS'two'# p3# aaS'apple'# p4# a.# ['hello', 42, [1, 'two'], 'apple']
2.流行的json序列化方法
import jsonvariable = ['hello', 42, [1,'two'],'apple']print "Original {0} - {1}".format(variable,type(variable))# encodingencode = json.dumps(variable)print "Encoded {0} - {1}".format(encode,type(encode))#deccodingdecoded = json.loads(encode)print "Decoded {0} - {1}".format(decoded,type(decoded))# output# Original ['hello', 42, [1, 'two'], 'apple'] - <type 'list'=""># Encoded ["hello", 42, [1, "two"], "apple"] - <type 'str'=""># Decoded [u'hello', 42, [1, u'two'], u'apple'] - <type 'list'="">
字符串压缩
import zlibstring = """ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc ut elit id mi ultricies adipiscing. Nulla facilisi. Praesent pulvinar, sapien vel feugiat vestibulum, nulla dui pretium orci, non ultricies elit lacus quis ante. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam pretium ullamcorper urna quis iaculis. Etiam ac massa sed turpis tempor luctus. Curabitur sed nibh eu elit mollis congue. Praesent ipsum diam, consectetur vitae ornare a, aliquam a nunc. In id magna pellentesque tellus posuere adipiscing. Sed non mi metus, at lacinia augue. Sed magna nisi, ornare in mollis in, mollis sed nunc. Etiam at justo in leo congue mollis. Nullam in neque eget metus hendrerit scelerisque eu non enim. Ut malesuada lacus eu nulla bibendum id euismod urna sodales. """print "Original Size: {0}".format(len(string))compressed = zlib.compress(string)print "Compressed Size: {0}".format(len(compressed))decompressed = zlib.decompress(compressed)print "Decompressed Size: {0}".format(len(decompressed))# output# Original Size: 1022# Compressed Size: 423# Decompressed Size: 1022
注册Shutdown函数
脚本运行完毕后会执行shutdown函数:
import atexitimport timeimport mathdef microtime(get_as_float = False) : if get_as_float: return time.time() else: return '%f %d' % math.modf(time.time())start_time = microtime(False)atexit.register(start_time)def shutdown(): global start_time print "Execution took: {0} seconds".format(start_time)atexit.register(shutdown)# Execution took: 0.297000 1387135607 seconds# Error in atexit._run_exitfuncs:# Traceback (most recent call last):# File "C:\Python27\lib\atexit.py", line 24, in _run_exitfuncs# func(*targs, **kargs)# TypeError: 'str' object is not callable# Error in sys.exitfunc:# Traceback (most recent call last):# File "C:\Python27\lib\atexit.py", line 24, in _run_exitfuncs# func(*targs, **kargs)# TypeError: 'str' object is not callable
else高级用法
1.用于非正常循环结束
def print_prime(n): for i in xrange(2, n): # found = True for j in xrange(2, i): if i % j == 0: # found = False break else:# ==> if has break print "{} it's a prime number".format(i) # if found: # print "{} it's a prime number".format(i)print_prime(7)2 it's a prime number3 it's a prime number5 it's a prime number
2.try except没有出现except
def my_to_int(str_param): try: print int(str_param) except ValueError: print 'cannot convert {} to a integer'.format(str_param) else: print 'convert {} to integer successfully'.format(str_param)my_to_int("123")my_to_int("me123")123convert 123 to integer successfullycannot convert me123 to a integer
博客出处
原文:
http://python.jobbole.com/84228/
http://python.jobbole.com/84270/
0 0
- 你所不知道的python特点及语句
- 你所不知道的Python奇技淫巧
- 你所不知道的Python奇技淫巧
- 你所不知道的Python的第三方库
- 你所不知道的“位运算及运算过程”
- 你所不知道list的妙用
- 你所不知道的西安
- 你所不知道的知识
- 你所不知道的华为(z)
- 你所不知道的const
- 告诉你所不知道的typedef
- 告诉你所不知道的typedef
- 你所不知道的台湾宗教
- 你所不知道的8020法则
- 你所不知道的传输层
- 你所不知道的传输层
- 扑克你所不知道的
- 你所不知道的传输层
- Sql操作之二:不同数据库中表数据迁移
- QRCode--根据系统API, 封装二维码扫描
- Google推荐的图片加载库Glide介绍以及与picasso区别
- Spring事务管理只对出现运行期异常进行回滚
- LoadRunner的text验证及关联
- 你所不知道的python特点及语句
- C++引用计数(reference counting)技术简介(2)
- Apache Maven 入门篇 ( 上 )
- uva1267 - Network
- 外贸人都必须知道的国际贸易壁垒
- 移植mplayer到itop4412开发板
- Android WebView使用实例(html5、文件下载和远程URL)
- 装饰模式(Decorator Pattern)
- 使apk具有system权限