鉴于以下功能:
def foo(a, b, c):
pass
Run Code Online (Sandbox Code Playgroud)
如何获得传入的参数的list/tuple/dict/etc,而不必自己构建结构?
具体来说,我正在寻找Python的JavaScript arguments关键字版本或PHP的func_get_args()方法.
我不想要的是使用*args或的解决方案**kwargs; 我需要在函数定义中指定参数名称(以确保它们被传入),但在函数中我希望在list-或dict-style结构中使用它们.
我希望将传递给函数(func1)的所有参数作为参数传递给另一个函数(func2)里面func1
这可以*args, *kwargs在被调用中完成func1并传递给它们func2,但是还有另一种方法吗?
本来
def func1(*args, **kwargs):
func2(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
但如果我的func1签名是
def func1(a=1, b=2, c=3):
Run Code Online (Sandbox Code Playgroud)
如何在不使用的情况下将它们全部发送到func2
def func1(a=1, b=2, c=3):
func2(a, b, c)
Run Code Online (Sandbox Code Playgroud)
有没有像在JavaScript中的方式callee.arguments?
我想知道是否有办法将参数传递给指令?
我想要做的是从控制器附加一个指令,如下所示:
$scope.title = "title";
$scope.title2 = "title2";
angular.element(document.getElementById('wrapper')).append('<directive_name></directive_name>');
Run Code Online (Sandbox Code Playgroud)
是否可以同时传递参数,以便我的指令模板的内容可以链接到一个或另一个范围?
这是指令:
app.directive("directive_name", function(){
return {
restrict:'E',
transclude:true,
template:'<div class="title"><h2>{{title}}</h3></div>',
replace:true
};
})
Run Code Online (Sandbox Code Playgroud)
如果我想使用相同的指令但使用$ scope.title2会怎么样?
在Rust中是否可以使用默认参数创建函数?
fn add(a: int = 1, b: int = 2) { a + b }
Run Code Online (Sandbox Code Playgroud) 我正在写一小段python作为家庭作业,我不会让它运行!我没有那么多的Python经验,但我知道很多Java.我正在尝试实现粒子群优化算法,这就是我所拥有的:
class Particle:
def __init__(self,domain,ID):
self.ID = ID
self.gbest = None
self.velocity = []
self.current = []
self.pbest = []
for x in range(len(domain)):
self.current.append(random.randint(domain[x][0],domain[x][1]))
self.velocity.append(random.randint(domain[x][0],domain[x][1]))
self.pbestx = self.current
def updateVelocity():
for x in range(0,len(self.velocity)):
self.velocity[x] = 2*random.random()*(self.pbestx[x]-self.current[x]) + 2 * random.random()*(self.gbest[x]-self.current[x])
def updatePosition():
for x in range(0,len(self.current)):
self.current[x] = self.current[x] + self.velocity[x]
def updatePbest():
if costf(self.current) < costf(self.best):
self.best = self.current
def psoOptimize(domain,costf,noOfParticles=20, noOfRuns=30):
particles = []
for i in range(noOfParticles):
particle = Particle(domain,i)
particles.append(particle)
for i in range(noOfRuns): …Run Code Online (Sandbox Code Playgroud) 我有一个多个类,每个类都有不同的成员变量,这些变量在构造函数中被简单地初始化.这是一个例子:
struct Person
{
Person(const char *name, int age)
:
name(name),
age(age)
{
}
private:
const char *name;
int age;
};
Run Code Online (Sandbox Code Playgroud)
每个都有一个相关的print<>()功能.
template <>
void print<Person>(const Person &person)
{
std::cout << "name=" << name << "\n";
std::cout << "age=" << age << "\n";
}
Run Code Online (Sandbox Code Playgroud)
由于参数列表在四个位置复制,因此该代码容易出错.如何重写代码以避免重复?我想使用预处理器和/或模板.
例如,我可以使用X-args预处理器技术 - 类似这样的东西吗?
#define ARGUMENTS \
ARG(const char *, name) \
ARG(int, age)
struct Person
{
Person(LIST_TYPE_NAME_COMMA(ARGUMENTS))
:
LIST_NAME_INIT(ARGUMENTS)
{
}
private:
LIST_TYPE_NAME_SEMICOLON(ARGUMENTS)
};
template <>
void print<Person>(const Person &person)
{
LIST_COUT_LINE(ARGUMENTS)
} …Run Code Online (Sandbox Code Playgroud) 我编写了一个命令行实用程序,它使用getopt来解析命令行中给出的参数.我还希望有一个文件名是一个可选参数,比如它在其他实用程序中,如grep,cut等.所以,我希望它具有以下用法
tool -d character -f integer [filename]
Run Code Online (Sandbox Code Playgroud)
我该如何实施以下内容?
如何在MATLAB中用可选参数声明函数?
例如:function [a] = train(x, y, opt),opt必须是可选参数.
在Python中将一个可变对象设置为函数中参数的默认值是一个常见的错误.以下是David Goodger撰写的优秀文章中的一个例子:
>>> def bad_append(new_item, a_list=[]):
a_list.append(new_item)
return a_list
>>> print bad_append('one')
['one']
>>> print bad_append('two')
['one', 'two']
Run Code Online (Sandbox Code Playgroud)
之所以出现这种情况的解释是在这里.
现在我的问题是:这个语法有一个很好的用例吗?
我的意思是,如果遇到它的每个人都犯了同样的错误,调试它,理解问题,从而试图避免它,这种语法有什么用?
function foo(x) {
console.log(arguments)
} //foo(1) prints [1]
Run Code Online (Sandbox Code Playgroud)
但
var bar = x => console.log(arguments)
Run Code Online (Sandbox Code Playgroud)
以相同方式调用时出现以下错误:
Uncaught ReferenceError: arguments is not defined
Run Code Online (Sandbox Code Playgroud) arguments ×10
python ×5
function ×4
parameters ×2
angularjs ×1
c++ ×1
command-line ×1
controller ×1
directive ×1
ecmascript-6 ×1
file ×1
javascript ×1
lambda ×1
math ×1
matlab ×1
methods ×1
mutable ×1
object ×1
rust ×1
stdin ×1
templates ×1