标签: parameter-passing

有没有办法将命名函数参数转换为 dict

我想知道是否有一种方法可以将命名参数转换为dict.

我知道使用**kwargs代替单个命名参数将非常简单。

def func(arg1=None, arg2=None, arg3=None):
    # How can I convert these arguments to {'arg1': None, 'arg2': None, 'arg3': None}`
Run Code Online (Sandbox Code Playgroud)

python dictionary function parameter-passing named

0
推荐指数
1
解决办法
504
查看次数

将附加参数传递给仅需要 1 的回调对象

所以我正在开发一个小项目,我正在使用 websocket 客户端库,为了创建一个WebSocketApp处理 websocket 连接的对象,您可以使用类似的方法实例化该对象

ws = websocket.WebSocketApp(uri, on_open=on_open, on_message=on_message, on_ping=on_ping)
Run Code Online (Sandbox Code Playgroud)

现在我有一个名为on_message回调函数(对象?)的函数,它处理传入的消息,或者更确切地说如何处理它们,并且ws当完整消息传入时(显然)由我创建的对象调用。 on_message被定义为实例化对象时的回调WebSocketApp

on_message 是这样的

def on_message(ws, message):
    print(message)
Run Code Online (Sandbox Code Playgroud)

我想要的是这样的:

def on_message(ws, message, someList)
    somelist.append(message)
Run Code Online (Sandbox Code Playgroud)

我当然可以使用全局变量来引用我想要更新的对象(在本例中是一个列表),但这似乎不是正确的方法,如果我可以传递对该对象的引用,那就太好了我想在初始化WebSocketApp对象时进行更新,例如:

ws = websock.WebSocketApp(uri, on_message=on_message(ref_to_Obj), on_open=on_open, on_close=on_close)
Run Code Online (Sandbox Code Playgroud)

但显然这不起作用,因为我收到TypeError: on_message() missing 2 required positional arguments: 'message' and objRef'错误。

我不完全确定如何解决这个问题。我想到了子类化,但也不确定如何实现它。查看源代码,WebSocketApp它说它有 2 个参数,1)WebSocketApp类本身和 2)从服务器接收的 utf-8 数据。我从来没有传递这些,并且我假设库在创建它们时只是将这些引用传递出去,但是我如何重载它以包含其他参数?首先想到的是使用 *args 或 **kwargs 进行重载,但又不确定如何实现它。我之前问过,建议使用 lambda 函数,但我也不知道如何让它工作。

arguments overloading parameter-passing keyword-argument python-3.x

0
推荐指数
1
解决办法
1684
查看次数

C# 简化 switch 语句

我可以以某种方式简化这个 switch 语句,因为这两种情况都只使用另一个函数参数做同样的事情吗?

\n
switch (data.Subscriber.Protocol)\n{\n    case "email json":\n        builder.Attachments.Add("O\xc4\x8ditanje.json", CraftAttachment(data));\n        break;\n    case "email text":\n        builder.Attachments.Add("O\xc4\x8ditanje.txt", CraftAttachment(data));\n        break;\n    default:\n        break;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

c# parameter-passing switch-statement .net-6.0 c#-10.0

0
推荐指数
1
解决办法
1260
查看次数

动态地将不同对象传递给同一方法

我有一个方法,当作为参数传递时,对4种不同类的类执行相同的任务.目前,我必须为所有4个类编写该方法4次.例:

doSomethingForClass1(MyClass1 myclass1, Address address);
doSomethingForClass2(MyClass2 myclass2, Address address);
doSomethingForClass3(MyClass3 myclass3, Address address);
doSomethingForClass4(MyClass4 myclass4, Address address);
Run Code Online (Sandbox Code Playgroud)

所有这些方法都做同样的事情并返回相同的对象.如何将其合并为一个方法并传递不同的对象?

java overriding parameter-passing

-1
推荐指数
1
解决办法
7327
查看次数

如何将参数传递给Crystal Report?

没有使用VB,C#或ASP,据说我想直接将参数传递给Crystal Reports XI R2.例如:

click 'Start'
type 'Run' then Enter 
'MyReport.rpt 12345'
Run Code Online (Sandbox Code Playgroud)

(12345)是我要传入的参数,或者我可以输入

 'MyReport.rpt?parameter1=12345'
Run Code Online (Sandbox Code Playgroud)

我在研究过程中发现的大多数例子都是讨论VB或ASP,这不是我想要的.

提前致谢!

parameters parameter-passing crystal-reports

-1
推荐指数
1
解决办法
6346
查看次数

如何使用'this'作为另一个对象的参数?

首先我知道这一定很简单,我一直在尝试在Stackoverflow.com和Google上阅读类似的问题,但我仍然无法让我的程序运行.

我很快写了一篇关于我的程序试图做的摘要:

    public class One{

    public One(){
        Two t = new Two(this);
    }

    public void doSomething(){
        sout("HERE");
    }

    public static void main(String[] args){
        One o = new One()
        Two t = new Two(o);
    }

}

    public class Two{

        public Two(One o){
            One o = o;
            o.doSomething();
        }
    }
Run Code Online (Sandbox Code Playgroud)

当我运行程序时,我从方法调用o.doSomething()得到一个NullPointerException.我已经尝试了一段时间来解决它,但我很难过.如果有人能够快速告诉我修复它会非常感激.

java reference this parameter-passing

-1
推荐指数
1
解决办法
94
查看次数

什么更有效:通过指针或值传递参数?

什么更有效:通过指针或值调用?我认为它是由指针调用,因为传递指向变量的指针不会使用与创建变量副本一样多的内存.我错了吗?

main(){
   int a, b;
   a = 10;
   b = 5;
   gcf(&a, &b);
   return 0;
}
int gcf(int* c, int* d){
   int val1=*c;
   int val2=*d;
   //...
}
Run Code Online (Sandbox Code Playgroud)

c++ parameter-passing

-1
推荐指数
1
解决办法
4088
查看次数

功能什么都不做

我无法使函数mostrarmatriz()工作.该程序从头到尾编译和运行没有错误,但函数mostrarmatriz()没有显示任何东西.当我将该功能复制到主功能时,它可以完美地工作.看来我通过引用传递值时遇到了问题.请帮忙,我被困住了.

Main.c文件:

#include "InvMatriz.h"
#include <stdio.h>

int main(int argc, char **argv)
{
    float **A;
    int n;
    printf("Ingrese el tamaño de la matriz: ");
    scanf("%d", &n);

    A = ingresematriz(n);
    void mostrarmatriz(A, n);
    printf("adfasd");

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

头文件InvMatriz.h

#ifndef INVMATRIZ_H_
#define INVMATRIZ_H_

float** ingresematriz(int );
void mostrarmatriz(float**X ,int x);

#endif // INVMATRIZ_H
Run Code Online (Sandbox Code Playgroud)

Ingrese Matriz.c文件

#include "InvMatriz.h"
#include <stdio.h>



float **ingresematriz(int n)
{

    int i, j;

    //Asigna espacio en la memoria

    float **A;

    A = malloc(n * sizeof (float *));
    for (i = …
Run Code Online (Sandbox Code Playgroud)

c file parameter-passing pass-by-reference

-1
推荐指数
1
解决办法
212
查看次数

参数传入C函数

我是新手.所以请耐心等待,

#include<stdio.h>

    int abc(int k)
    {
    k++;

    }
    int main()
    {
    int a=1;
    printf("%d",abc(a));

    return 0;
    }
Run Code Online (Sandbox Code Playgroud)

以上程序的输出是:1

我的问题是输出不应该是'2',因为实际参数将'1'的值传递给形参,并且必须通过函数abc递增.

当我将函数调用更改为

printf("%d",abc(1));
Run Code Online (Sandbox Code Playgroud)

输出是一些垃圾值.

参数传递如何在这里工作?请解释.

c function parameter-passing

-1
推荐指数
1
解决办法
79
查看次数

检测类构造函数中传递的参数类型

我希望类的构造函数能够传递两种类型的参数,然后在方法内部根据参数的类型做一些事情.类型将是doubleString[].类及其构造函数类似于:

public class MyClass
{
    public MyClass (Type par /* the syntax here is my issue */ )
    {
        if (Type.GetType(par) == String[])
        {  
            /// Do the stuff
        }

        if (Type.GetType(par) == double)
        {  
            /// Do another stuff 
        }
}
Run Code Online (Sandbox Code Playgroud)

并且这个类将以这种方式在另一个类上实例化:

double d;
String[] a;

new MyClass(d);    /// or new MyClass(a);
Run Code Online (Sandbox Code Playgroud)

c# constructor types class parameter-passing

-1
推荐指数
1
解决办法
132
查看次数