在Python中,我可以根据其他参数指定函数参数的默认值吗?

2023-12-22

假设我有一个带有两个参数的 python 函数,但我希望第二个参数是可选的,默认值是作为第一个参数传递的任何参数。所以,我想做这样的事情:

def myfunc(arg1, arg2=arg1):
    print (arg1, arg2)

但那是行不通的。我能想到的唯一解决方法是:

def myfunc(arg1, arg2=None):
    if arg2 is None:
        arg2 = arg1
    print (arg1, arg2)

有一个更好的方法吗?


正如@Ignacio 所说,你不能这样做。在你的后一个例子中,你可能会遇到这样的情况:None是一个有效值arg2。如果是这种情况,您可以使用哨兵值:

sentinel = object()
def myfunc(arg1, arg2=sentinel):
    if arg2 is sentinel:
        arg2 = arg1
    print (arg1, arg2)

myfunc("foo")           # Prints 'foo foo'
myfunc("foo", None)     # Prints 'foo None'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Python中,我可以根据其他参数指定函数参数的默认值吗? 的相关文章

  • 在Python中,如何将矩阵逆时针旋转90度?

    gt gt gt def rotate matrix k List List int For example if I have m 1 2 3 2 3 3 5 4 3 rotate matrix m should give me 3 3
  • 我应该在构造函数中调用成员函数吗

    我知道这是一个相当简单的问题 并且还取决于代码的其余部分 但我对经验法则更感兴趣 那么什么情况下适合在构造函数中调用函数呢 更可取的是 ClassA obj1 obj1 memFun or ClassA obj1 where constru
  • Keras model.predict 函数给出输入形状错误

    我已经在 Tensorflow 中实现了通用句子编码器 现在我正在尝试预测句子的类概率 我也将字符串转换为数组 Code if model model type universal classifier basic class probs
  • 为什么在连接两个字符串时 Python 比 C 更快?

    目前我想比较 Python 和 C 用来处理字符串的速度 我认为 C 应该比 Python 提供更好的性能 然而 我得到了完全相反的结果 这是 C 程序 include
  • django 模板 - 如何动态访问变量?

    假设我有一个具有以下上下文的 django 模板 data1 this is data1 data2 this is data2 data name data2 现在我知道了data name 假设它是 data2 是否可以用它来访问变量d
  • 带有 mkdocs 的本地 mathjax

    我想在无法访问互联网的计算机上使用 MathJax 和 Mkdocs 因此我不能只调用 Mathjax CDN Config mkdocs yml site name My Docs extra javascript javascripts
  • 使用pathlib获取主目录

    翻看新的pathlib在 Python 3 4 中 我注意到没有任何简单的方法来获取用户的主目录 我能想到的获取用户主目录的唯一方法是使用旧的os path像这样的库 import pathlib from os import path p
  • 用 Python 绘制直方图

    我有两个列表 x 和 y x 包含字母表 A Z Y 包含它们在文件中的频率 我尝试研究如何在直方图中绘制这些值 但在理解如何绘制它方面没有成功 n bins patches plt hist x 26 normed 1 facecolor
  • Py2exe - Pmw WindowsError:[错误 3]

    我正在尝试使用 Py2exe 构建独立的可执行文件 我已经导入了 Pmw 类 当我运行独立可执行文件时 出现以下错误 Traceback most recent call last File py line 9 in
  • 使用 subprocess.Popen() 或 subprocess.check_call() 时程序卡住

    我想从 python 运行一个程序并找到它的内存使用情况 为此 我正在使用 l a out lt in txt gt out txt p subprocess Popen l shell False stdout subprocess PI
  • 类型错误:此 COM 对象无法自动执行 makepy 过程 - 请为此对象手动运行 makepy

    这是什么错误 回溯错误 C Users DELL PycharmProjects MyNew venv Scripts python exe C Users DELL PycharmProjects MyNew agaaaaain py T
  • 如何用正则表达式替换多个匹配/组?

    通常我们会编写以下内容来替换一场比赛 namesRegex re compile r is life re I replaced namesRegex sub r butter There is no life in the void pr
  • 更改 Matplotlib 投影轴的背景颜色

    我正在尝试使用 Cartopy 创建一个图形 该图形需要在未投影的轴上绘制投影轴 这是一个尽可能简单的代码版本 它将轴上的内容替换为背景颜色 import matplotlib pyplot as plt import cartopy cr
  • Python:在字典中查找具有唯一值的键?

    我收到一个字典作为输入 并且想要返回一个键列表 其中字典值在该字典的范围内是唯一的 我将用一个例子来澄清 假设我的输入是字典 a 构造如下 a dict a cat 1 a fish 1 a dog 2 lt unique a bat 3
  • Seaborn 中没有线性拟合的散点图

    我想知道是否有办法关闭seaborn中的线性拟合lmplot或者是否有一个等效函数可以生成散点图 当然 我也可以使用 matplotlib 但是 我发现 seaborn 中的语法和美学非常吸引人 例如 我想绘制以下情节 import sea
  • 如何获取分类数据的分组条形图

    I have a big dataset with information about students And I have to build a graph of dependencies between different value
  • 如何在matplotlib中调整x轴

    I have a graph like this x轴上的数据表示小时 所以我希望x轴设置为0 24 48 72 而不是现在的值 很难看到 0 100 之间的数据 fig1 plt figure ax fig1 add subplot 11
  • 将数组作为参数传递

    如果我们修改作为方法内参数传递的数组的内容 则修改是在参数的副本而不是原始参数上完成的 因此结果不可见 当我们调用具有引用类型参数的方法时 会发生什么过程 这是我想问的代码示例 using System namespace Value Re
  • 如何创建用于霍夫曼编码和解码的树?

    对于我的作业 我将对霍夫曼树进行编码和解码 我在创建树时遇到问题 并且陷入困境 不要介意打印语句 它们只是让我测试并查看函数运行时的输出是什么 对于第一个 for 循环 我从主块中用于测试的文本文件中获取了所有值和索引 在第二个 for 循
  • 两种 ODE 求解器之间的差异

    我想知道 两者之间有什么区别ODEINT and solve ivp用于求解微分方程 它们之间有什么优点和缺点 f1 solve ivp f 0 1 y0 y0 is the initial point f2 odeint f y0 0 1

随机推荐

  • VB.NET 管理对象帮助

    我正在尝试创建一个函数来将映射的驱动器路径转换为 UNC 路径 我做了一些谷歌搜索并发现several http groups google nu group DotNetDevelopment msg 6caffd33ad1eae11 不
  • iis7上的gzip http压缩问题

    我的网络托管提供商正在运行 IIS7 但我在让 gzip 压缩正常工作方面遇到了很多麻烦 主机管理员说已安装压缩 我可以使用一些在线检查服务确认压缩 但不能使用其他服务 PageSpeed Firefox 插件还表示该网站未压缩 我个人坐在
  • 无法分配给函数调用是什么意思(python)[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我最近开始学习Python 我被分配的任务是创建一个在字典中平均成绩的函数 lloyd name Lloyd homework 9
  • 在 argparse 中使用变量 arg 名称

    我有一个上游系统 它使用不同的参数名称调用我的程序 例子 foo xyz1 10 xyz2 25 xyz3 31 我希望 argparsing 的结果为 xyz 10 25 31 我的参数名称有一个共同的前缀 但不幸的是至少必须有不同的数字
  • 使用 JSP 列出服务器目录的内容

    我在服务器上的以下目录中有文件 D tomcat8 webapps schema files 我想列出上面目录中存在的所有文件 我尝试过的 它不起作用 但是 如果我将文件存储在应用程序本身的 WEB INF filefolder 中 则以下
  • 如何在容器上使用本地文件?

    我正在尝试创建一个容器来运行程序 我正在使用预配置映像 现在我需要运行该程序 然而 它是一个机器学习程序 我需要计算机中的数据集才能运行 文件太大 无法复制到容器中 最好是在容器中运行的程序在我的计算机的本地目录中搜索数据集 但我不知道如何
  • 基于字符向量进行子集化时 knit_expand 失败

    我本质上是想修改这个答案 https stackoverflow com a 14368148 2726564以编程方式生成带有变量每个级别的图的块 然而 在我的特定情况下 我传递了一个用于后续子集设置的字符向量 这似乎是代码失败的根源 M
  • 如何在 C# 中以编程方式读取 sql server mdf header 中的日志文件信息

    我需要以编程方式附加数据库 但日志文件命名约定似乎不同 例如 database1 mdf has database1 ldf database2 mdf has database2 log ldf等等 所以 我的猜测是有关日志文件的信息将位
  • 导出 webpack 包/前置 module.exports?避免节点中出现空对象?

    我试图将我的bundle js放入我的Node服务器 但显然webpack包缺少一个module exports 在顶部的所有捆绑代码之前 我可以手动放置module exports 到这个捆绑包中 但必须有一种编程方式来指定该捆绑包应该是
  • Wpf 使用 MvvmCross 进行多个嵌套用户控件

    我是新来的MvvmCross但我正在与mvvm一阵子 我知道如何使用嵌套用户控件来组合用户控件 现在与mvvmcross我被困在另一个用户控件中显示两个或多个用户控件 我不使用任何其他框架MvvmCross 我的根视图如下所示
  • 使用 Jquery 调整 Html 表的行和列大小

    我必须调整 HTML 表格行 列的宽度和高度 现在我使用单独的插件来调整列宽插件链接 http quocity com colresizable 并单独的jquery函数来调整rowHeight MatrixTabletr resizabl
  • Javascript require 方法未找到 axios 模块

    我正在为 gmail 创建一个 chrome 扩展 我已经使用 npm install axios 安装了 axios 并创建了一个包含该模块的 node modules 文件夹 然后 我尝试将该模块包含在我的 extension js 文
  • MatSort 显示了箭头,但它实际上并未对数据进行排序

    我在这个项目中使用了很多表 并且 MatSort 在所有其他组件中都运行良好 但是 我创建了这个新组件 尽管单击表标题时可以显示箭头 但数据本身并未排序 我将项目的每一行与 Sort Header Angular 演示以及已经运行良好的组件
  • 为什么我不能单独打印复制的字符串? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 string s 1 23 string a a 0 s 2 a 1 s 3 cout lt
  • 查找所有未使用的变量

    通常 在 Netbeans 中很容易看到未使用的变量 只是一条灰色的波浪线 但是我如何在我的项目或单个类中找到所有这些未使用的变量呢 Reason 我正在调试一个有大量复制和粘贴的代码库 但做得不够仔细 复制粘贴后存在许多未替换为正确变量的
  • Windows 7:属性处理程序在资源管理器中工作,但在 FileOpenDialog 中不起作用?

    致力于为 Windows 7 中的自定义文件类型编写自定义属性处理程序 我已经安装了 Windows 7 SDK 并构建了示例属性处理程序 注册处理程序后 它在 Windows 资源管理器中运行良好 但在通用文件打开对话框中 自定义值不会出
  • JavaScript 中的大括号变量

    我在 ExtJS 中经常遇到这种情况 我想知道它是从哪里来的 我有一个这样的例子 view new Ext grid GroupingView forceFit true groupTextTpl text values rs length
  • Thymeleaf + Spring-Boot - 为什么我无法访问静态资源?

    我的项目树如下所示 我现在可以访问模板 但无法加载 CSS 图像和 JS 等静态资源 我有一个common html我在其中声明所有静态资源的片段 例如 我包含的标题片段common html像这样 page body A de
  • 如何在Linux中做一个假的鼠标滚轮移动

    我正在尝试模拟键盘和鼠标事件 我已经成功制作了假键盘 keydown keyup 假鼠标按钮按下 向上和假鼠标移动 但我没有找到如何做假鼠标滚轮移动 有人可以向我解释一个在 C 中执行此操作的简单方法吗 鼠标移动和鼠标按钮按下 Displa
  • 在Python中,我可以根据其他参数指定函数参数的默认值吗?

    假设我有一个带有两个参数的 python 函数 但我希望第二个参数是可选的 默认值是作为第一个参数传递的任何参数 所以 我想做这样的事情 def myfunc arg1 arg2 arg1 print arg1 arg2 但那是行不通的 我