php 函数:func_get_args()、func_get_arg()与func_num_args()

函数 func_get_args–  返回一个包含函数参数列表的数组

"sn YdA3wF(j

描述

BSD爱好者乐园7r8}x!B&Y)j R4V

arrayfunc_get_args( void )

!LZV?!a BSD爱好者乐园0?%y t7V4~/O(aI

此函数返回一数组,数组的各个元素相当于是目前使用者定义函数的各个参数。如果是从函数定义的外面来呼叫此函数,则func_get_args()将会产生警告。

oT!Gp"m Sx BSD爱好者乐园9NlsB&v#h \

函数 func_get_arg–  从函数参数列表返回指定参数

1H9W9K w^&~@T0t.kJ

描述

!].sP N2p5O(s*|mixedfunc_get_arg( int arg_num )BSD爱好者乐园w:]1NY4~

BSD爱好者乐园g7M [^Uj7\Pg

传回定义函数的参数列表的第arg_num个参数,其参数从0开始。且函数定义的外面来呼叫此函数会产生警告;并且当arg_num大于函数实际传递的参数数目时亦会产生警告并返回FALSE。

Y/w_(b(`(V:a T

``2ZI.r~ O R"yfZ函数 func_num_args– 返回传递到函数的参数数目BSD爱好者乐园xV6M,RA&c9O7i3J

描述

$?"EA*X.Nn jintfunc_num_args( void )

)\6H)~8b#A7V!~w BSD爱好者乐园I0v#]t,hF/gC]&f

此函数返回传递到目前定义函数的参数数目。如果是从函数定义的外面来呼叫此函数,则func_num_args()将会产生警告。BSD爱好者乐园;C-e,Ka1N TNR{Fm

.x2obmJ V8vfunc_num_args()可以用来结合func_get_arg()和func_get_args(),来允许使用者定义的函数接受可变长度参数列表。在我们构建PHP类的时候,灵活使用这三个函数,可以起到非常理想的效果,例如外面在创建PHPMYSQL链接的类时,可以书写如下代码:BSD爱好者乐园8wq9w ZY5@

"Dk5lT4H"XS<?php
-Y d0y6{Miclass mydb{BSD爱好者乐园\ M)wj G_9`,b

BSD爱好者乐园!o+`8s [Z#T8o

private $user;BSD爱好者乐园'd)N)i,o4I Kcu2h
private $pass;BSD爱好者乐园5D B"z!\ t` ]
private $host;BSD爱好者乐园*D6G0H&OTZI
private $db;BSD爱好者乐园!i!c3X;{-xk

BSD爱好者乐园'L(U1|I#Iv;F3F

public function __construct(){BSD爱好者乐园-R6n-q!Tn
$num_args=func_num_args();BSD爱好者乐园&x8m&][l
if($num_args>0){BSD爱好者乐园5d f8[;Z2f [VR&N\}
$args=func_get_args();
3\.Ryk?8b!v$this->host=$args[0];BSD爱好者乐园P(DO6g Q%c:W%Z:].z7E6V Y
$this->user=$args[1];BSD爱好者乐园![!F-t5QT:CL
$this->pass=$args[2];BSD爱好者乐园rN!\;} RN
this->connect();
J8s(O'G7u!HX}
8`ds c2Ng}

ZQo!d2M@qS_ BSD爱好者乐园w5A0dZ'm+voX

……..BSD爱好者乐园 k:w ]V?"H6v
?>BSD爱好者乐园3Y:s#C3[ h

这段代码定义了一个名为 `get_loss` 的函数,该函数用于根据给定的 `loss_args` 参数获取损失函数函数的功能如下: 1. 从 `loss_args` 字典中获取损失函数的类型 `loss_type`。 2. 使用正则表达式来判断损失函数类型是否符合特定的函数式样式(如 `func(arg)` 形式)。 3. 如果损失函数类型符合函数式样式,解析出函数名 `func` 和参数名 `arg`,并创建一个新的 `new_args` 字典,将 `loss_args` 中的内容复制到 `new_args` 中。 4. 如果函数名为 `'Summed'`,将 `new_args` 中的 `'type'` 参数替换为 `arg` 值,并递归调用 `get_loss(new_args)` 来获取损失函数。 5. 如果损失函数类型为 `'BCE'`,则将损失函数类 `torch.nn.BCEWithLogitsLoss` 赋给变量 `loss_class`。如果 `loss_args` 中包含 `'pos_weight'` 参数,将其乘以一个大小为 `[1]` 的张量,并将结果赋给 `args['pos_weight']`。 6. 如果损失函数类型为 `'FocalLoss'`,则返回一个名为 `focal_loss_with_logits` 的函数。 7. 如果损失函数类型为 `'AutoBCE'`,则返回一个名为 `auto_weight_bce` 的函数。 8. 如果损失函数类型不属于上述任何一种类型,则抛出一个 `ValueError` 异常,指示未知的损失函数类型。 9. 根据 `loss_class` 和 `args` 创建并返回相应的损失函数对象。 总结来说,这个函数根据给定的 `loss_args` 参数获取相应的损失函数。它支持多种类型的损失函数,包括 `'BCE'`、`'FocalLoss'` 和 `'AutoBCE'`。如果损失函数类型符合特定的函数式样式(如 `'Summed'`),则会递归调用来获取损失函数。在返回损失函数之前,根据需要设置相应的参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值