在 Fortran 中,您可以執行以下操作:
#:for DTYPE, NAME in [('real','ssygvd'), ('dble', 'dsygvd'), ('cmplx', 'chegvd')]
subroutine ${DTYPE}$_something_${NAME}$(args)
[some commands]
end subroutine ${DTYPE}$_something_${NAME}$
像這樣的事情可以在 Python 中完成嗎?
我想為 float、int 和 str 撰寫這樣的函式。
def get_int_tuple(value):
try:
values = [int(i) for i in value.split(',')]
assert len(values) in range(1,4)
except (ValueError, AssertionError):
raise argparse.ArgumentTypeError(
'Provide a CSV list of 1 up to 3 integers'
)
# return our value as is if there is only one
if len(values) == 1:
return tuple(np.array(values))
# if there are three - return a range
return tuple(np.arange(*values))
然后我將其傳遞給決議器:
parser.add_argument(
"--kernel",
type=get_str_tuple,
help="SVM kernel. Options: 'linear', 'poly', 'rbf' (default=rbf)"
)
parser.add_argument(
'--c',
type=get_float_tuple,
help="C (hyper)parameter of 'rbf' kernel (default=0.05)."
)
parser.add_argument(
'--degree',
type=get_int_tuple,
help="Degree of the 'poly' kernel. (default=3)."
)
uj5u.com熱心網友回復:
型別本身是一流的物件,因此您可以將它們作為引數傳遞給單個函式。
首先,定義一個定義通用函式的函式,關閉所需的型別。
def make_type(type_, type_name):
def get_tuple(value):
try:
values = [type_(i) for i in value.split(',')]
assert len(values) in range(1,4)
except (ValueError, AssertionError):
raise argparse.ArgumentTypeError(
f'Provide a CSV list of 1 or 3 {type_name}'
)
# return our value as is if there is only one
if len(values) == 1:
return tuple(np.array(values))
# if there are three - return a range
return tuple(np.arange(*values))
return get_tuple
然后使用為 `add_argumentmake_type的引數創建必要的引數。type
parser.add_argument(
"--kernel",
type=make_type(str, "strings"),
help="SVM kernel. Options: 'linear', 'poly', 'rbf' (default=rbf)"
)
parser.add_argument(
'--c',
type=make_type(float, "floating-point values"),
help="C (hyper)parameter of 'rbf' kernel (default=0.05)."
)
parser.add_argument(
'--degree',
type=make_tuple(int, "integers"),
help="Degree of the 'poly' kernel. (default=3)."
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/450548.html
上一篇:R:根據資料框的大小調整函式
下一篇:如何創建一個接受兩個引數(numRows、numColumns)并回傳具有正確網格值的二維陣列的JavaScript函式?
