python函式匹配任意數目的引數

2021-06-09 17:39:05 字數 1999 閱讀 7163

通過傳遞任何傳送進來的引數來支援具有任意引數的任意函式:

def tracer(func, *pargs, **kargs):

print('calling:', func.__name__)

return func(*pargs, **kargs)

def func(a, b, c, d):

return a + b + c + d

print(tracer(func, 1, 2, c=3, d=4))

tracer收集引數,然後以varargs呼叫語法來傳遞它。

返回結果:

('calling:', 'func')

10

對模組計時:

#file mytimer.py

import time

reps = 1000

repslist = range(reps)

def timer(func, *pargs, **kargs):

start = time.clock()

for i in repslist:

ret = func(*pargs, **kargs)

elapsed = time.clock() - start

return (elapsed, ret)

計時指令碼:

#file timeseqs.py

import sys, mytimer

reps = 10000

repslist = range(reps)

def forloop():

res =

for x in repslist:

return res

def listcomp():

return [x + 10 for x in repslist]

def mapcall():

return list(map(lambda x: x + 10, repslist))

def genexpr():

return list(x + 10 for x in repslist)

def genfunc():

def gen():

for x in repslist:

yield x + 10

return list(gen())

print(sys.version)

for test in (forloop, listcomp, mapcall, genexpr, genfunc):

elapsed, result = mytimer.timer(test)

print ('-' * 33)

print ('%-9s: %.5f => [%s...%s]' %

(test.__name__, elapsed, result[0], result[-1]))

返回結果:

2.7.3 (default, apr 10 2012, 23:31:26) [msc v.1500 32 bit (intel)]

---------------------------------

forloop : 1.60391 => [10...10009]

---------------------------------

listcomp : 0.77515 => [10...10009]

---------------------------------

mapcall : 1.73903 => [10...10009]

---------------------------------

genexpr : 1.18348 => [10...10009]

---------------------------------

genfunc : 1.14585 => [10...10009]

返回任意數目的自定義標籤tab

對於自定義標籤,後台給出的數目不確定,需要開發動態載入 上 public class tagslayout extends viewgroup 負責設定子控制項的測量模式和大小 根據所有子控制項設定自己的寬和高 override protected void onmeasure int widthm...

檢查任意數目的整型引數並返回最大值

stdarg巨集 可變引數列表是通過巨集來實現的,這些巨集定義在stdarg.h標頭檔案中,它是標準庫的一部分,這個標頭檔案宣告了乙個型別va list,和三個巨集 va start,va arg,和va end。我們可以宣告乙個型別為va list的變數,與這幾個巨集配合使用,訪問引數的值。檢查任...

最長的含有相同數目的01子串 括號匹配問題

題目 給定乙個字串,字串中只包含 0 和 1 請找到乙個最長的子串,使得其中0和1的數量是相同的 例1 10101010 結果就是其本身 例2 0011110 結果是 0011 擴充套件 給定乙個字串,字串只包含 和 請找出乙個最長的子串,使得該子串滿足括號匹配法則。例1 結果為自身 例2 結果為 ...