我是python的新手.请看这个脚本:
def myfunc(*args):
print len(args)
if args == 3:
for arg in args:
print arg
else:
print "exit"
a, b, c = 1, 2, 3
myfunc(a, b, c)
Run Code Online (Sandbox Code Playgroud)
如您所见,传递给function的参数数量为3.现在条件args==3
是True
但else
部分被执行.另一方面,如果if
条件为假,则执行该部分代码并else
跳过.
你能解释为什么if
声明在错误条件下执行吗?
我正在编写一个骰子滚动程序,它有两个参数传递给主程序,骰子有多少面以及你想扔的次数。如果传递的参数少于或多于两个,我想抛出异常。我该怎么做呢?
我找到了这个。但我不确定如何使用它?当然,我必须以某种方式指定在抛出异常之前预期的参数数量?
寻找有关如何使用 *args 正确解压缩其他函数中的返回参数的指导?这是代码;
#!/usr/bin/python
def func1():
test1 = 'hello'
test2 = 'hey'
return test1, test2
def func2(*args):
print args[0]
print args[1]
func2(func1)
Run Code Online (Sandbox Code Playgroud)
我收到的错误信息;
<function func1 at 0x7fde3229a938>
Traceback (most recent call last):
File "args_test.py", line 19, in <module>
func2(func1)
File "args_test.py", line 17, in func2
print args[1]
IndexError: tuple index out of range
Run Code Online (Sandbox Code Playgroud)
我已经尝试了一些事情,args()
但没有成功。尝试打开包装时我做错了什么?
我正在尝试编写一个 python 脚本,使用argparse
它将一个值设置为True
if-d
已设置。
这是我正在尝试的:
parser.add_argument("-d", "--dynamic", required=False)
dynamic = False
if args.dynamic is not None:
dynamic = True
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
用法:psd.py [-h] -f FILE [-d DYNAMIC] psd.py:错误:参数 -d/--dynamic:需要一个参数
如何将标志设置为期望 0 个参数?
我需要制作一个包含一些参数的可运行 HashMap。
(我正在编写一个游戏,我想要:“当玩家输入特定命令时,它会运行一个带有 args 的特定 void,缓存在我的 HashMap 中。”)
代码将(可能)比我更明确:
1=>制作命令列表的映射,每个键都应该运行:
-"myVoidWithArgs(arg1, arg2)"
-"myOtherVoidWithArgs(arg1, arg2)"
-等等。(arg1 & arg2 应该是字符串)
HashMap<String, Runnable> cmdList = new HashMap<>();
cmdList.put("teleport", () -> myVoidWithArgs(arg1, arg2));
cmdList.put("kill", () -> myOtherVoidWithArgs(arg1, arg2));
Run Code Online (Sandbox Code Playgroud)
2=>稍后,在另一个空白处,获取如下命令:
cmdList.get("teleport").run("Player", "coords");
cmdList.get("kill").run("Player", "Message");
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点 ?还有另一种方法吗?
谢谢
我正在尝试在 Python 3 (Python 3.7.0) 中使用args
和kwargs
解决问题,但我的理解遇到了一些问题。
这是我有一个简单的功能:
def add_args(y=10, *args, **kwargs):
return y, args, kwargs
Run Code Online (Sandbox Code Playgroud)
并测试它以查看返回的内容:
print(add_args(1, 5, 10, 20, 50))
print(add_args())
>>
(1, (5, 10, 20, 50), {}) # What happened to my default y=10?
(10, (), {})
Run Code Online (Sandbox Code Playgroud)
我不明白的是,y=10
第一个打印语句中发生了什么?我可以看到它被1
in覆盖,args
但我不确定为什么。
我怎样才能重写这个函数,这样默认值就不会被覆盖,或者我是否遗漏了参数从函数签名传递到 return 语句的方式?
最近我开始对stdarg.h
函数有了一些了解,因为我想要一些类似于printf
但不是写入控制台的东西,我想将它作为字符串返回。
到目前为止,这是我想出的:
char *write(const char *format, ...)
{
// init
va_list arg;
char *string;
va_start (arg, format);
vsprintf (string, format, arg);
// done
va_end (arg);
return string;
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是,它string
没有保留内存,这就是我需要帮助解决此功能的地方,因为我还没有找到任何解决方案。
提前致谢
我想使用 Kubernetes 和postman/newman
Docker 映像来执行我的 API 测试。
在本地,我可以使用以下命令执行图像
docker run postman/newman run <url-to-collection> --env-var baseUrl=<本地主机名>
我将映像包含在 Kubernetes 清单文件中
spec:
containers:
- name: newman
image: postman/newman:latest
args:
- run
- '<url-to-collection>'
- --env-var baseUrl=<kubernetes-hostname>
Run Code Online (Sandbox Code Playgroud)
当我应用清单并查看容器的日志时,出现以下错误:
error: unknown option '--global-var baseUrl=<kubernetes-hostname>'
我用引号尝试了很多东西,并使用该command
部分而不是该args
部分,但总是得到相同的结果。我认为 Kubernetes 以某种方式构建命令,而newman
可执行文件无法理解它。但是我找不到任何相关信息。
(我还在Newman 的 GitHub 存储库中创建了一个问题)
有人可以向我解释这个问题从何而来以及我如何解决这个问题吗?
不管怎么说,多谢拉!
我有一个从 Windows 快捷方式调用的 PS 脚本。我在上面放了几个文件或目录,它工作得很好。我想添加一些命名参数(我们称它们为:-Param1 和 -Param2),可选的,当然只能从 PowerShell 提示符中使用。
param (
[switch]$CreateShortcut
)
Run Code Online (Sandbox Code Playgroud)
开关参数起作用。
但是,如果我添加一个字符串参数:
param (
[switch]$CreateShortcut,
[string]$Param1
)
Run Code Online (Sandbox Code Playgroud)
当然,当我通过 Windows 快捷方式调用脚本时,它不再起作用: $Param1 接收第一个文件。
有解决办法吗?
谢谢
怎样public static void main(String args[])
的String args[]
实现?它被实现为varargs
?
我问这个是因为args.length
只提供了传递的参数数量,这意味着它没有在任何地方定义String args[] = new String[30]
.这个数组是如何实现的?
args ×10
python ×4
function ×3
java ×3
arguments ×2
c ×1
command-line ×1
docker ×1
exception ×1
hashmap ×1
kubernetes ×1
newman ×1
postman ×1
powershell ×1
python-3.x ×1
runnable ×1