在使用Python多年以后,我偶然發(fā)現(xiàn)了一些我們過去不知道的功能和特性。一些可以說是非常有用,但卻沒有充分利用。考慮到這一點,我編輯了一些你應(yīng)該了解的Python功能特色。
帶任意數(shù)量參數(shù)的函數(shù)
你可能已經(jīng)知道了Python允許你定義可選參數(shù)。但還有一個方法,可以定義函數(shù)任意數(shù)量的參數(shù)。
首先,看下面是一個只定義可選參數(shù)的例子
代碼如下:
def function(arg1="",arg2=""):
print "arg1: {0}".format(arg1)
print "arg2: {0}".format(arg2)
function("Hello", "World")
# prints args1: Hello
# prints args2: World
function()
# prints args1:
# prints args2:
現(xiàn)在,讓我們看看怎么定義一個可以接受任意參數(shù)的函數(shù)。我們利用元組來實現(xiàn)
代碼如下:
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: 0
foo("hello")
# Number of arguments: 1
# Argument 0 is: hello
foo("hello","World","Again")
# Number of arguments: 3
# Argument 0 is: hello
# Argument 1 is: World
# Argument 2 is: Again
使用Glob()查找文件
大多Python函數(shù)有著長且具有描述性的名字。但是命名為glob()的函數(shù)你可能不知道它是干什么的除非你從別處已經(jīng)熟悉它了。
它像是一個更強大版本的listdir()函數(shù)。它可以讓你通過使用模式匹配來搜索文件。
代碼如下:
import glob
# get all py files
files = glob.glob('*.py')
print files
# Output
# ['arg.py', 'g.py', 'shut.py', 'test.py']
你可以像下面這樣查找多個文件類型:
代碼如下:
import itertools as it, glob
def 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
如果你想得到每個文件的絕對路徑,你可以在返回值上調(diào)用realpath()函數(shù):
代碼如下:
import itertools as it, glob, os
def 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
新聞熱點
疑難解答
圖片精選