如何在 Python 中用一些预定义的变量替换缺少的位置参数

Posted

技术标签:

【中文标题】如何在 Python 中用一些预定义的变量替换缺少的位置参数【英文标题】:How to replace in Python missing positional args with some predefined variable 【发布时间】:2022-01-23 04:41:15 【问题描述】:

我想让这段代码可以用一个或两个位置参数运行:(host 和 port)当你没有定义端口号时,它将替换为预定义的数字。

如果您以 >myurl.py localhost "" 运行代码,它可以正常工作,但我想像 >myurl.py localhost 或 >myurl.py localhost 1234 那样运行

如何避免错误信息:

TypeError: url() 缺少 1 个必需的位置参数:'port'

import sys
def url(host, port):
    if port == "":
       sel_port = 5432 # set default port
    else:
       sel_port = port # set custom port
    gen_url = f'http://host:sel_port/'
    print(gen_url)

url(sys.argv[1],sys.argv[2])

【问题讨论】:

【参考方案1】:

我在运行您的代码时没有收到该错误,当我尝试引用 sys.argv[2] 时收到 IndexError: list index out of range

这是一个可能的解决方案:

import sys
def url(host, port=5432):
    gen_url = f'http://host:port/'
    print(gen_url)

url(*sys.argv[1:3])

【讨论】:

谢谢。完美运行!【参考方案2】:

您可以在函数参数中设置默认值 - 例如:

def url(host, port=5432):

【讨论】:

谢谢!真的很管用

以上是关于如何在 Python 中用一些预定义的变量替换缺少的位置参数的主要内容,如果未能解决你的问题,请参考以下文章

在 IOS 中用自定义 SFSafariViewController 替换 AppAuth

如何在 PHP 中的变量中用空格替换制表符?

如何在应用程序启动脚本中用环境变量替换硬编码的 JAVA_HOME?

如何在arch linux中用python 2完全替换python 3

如何在arch linux中用python 2完全替换python 3

如何在 Python 中用“”替换我的自定义字符?