Python中文
首页
教程
问答
标签
搜索
登录
注册
为什么Python没有符号函数?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我不明白为什么Python没有<code>sign</code>函数。它有一个内置的<code>abs</code>(我认为是<code>sign</code>的妹妹),但是没有<code>sign</code>。</p> <p>在python 2.6中甚至有一个<code>copysign</code>函数(在<a href="http://docs.python.org/library/math.html#math.copysign" rel="noreferrer">math</a>中),但没有符号。当你只需要写一个<code>sign</code>,然后直接从<code>abs(x) * sign(y)</code>获得<code>copysign</code>时,为什么还要费心写一个<code>copysign(x,y)</code>?后者要清楚得多:x的符号是y,而对于copypsign,你必须记住是x的符号是y,还是y的符号是x!</p> <p>显然<code>sign(x)</code>提供的信息不比<code>cmp(x,0)</code>多,但这也更具可读性(对于python这样一种可读性很强的语言,这是一个很大的优势)。</p> <p>如果我是一个python设计人员,我会反过来:不是内置的,而是一个<code>sign</code>。当你需要<code>cmp(x,y)</code>时,你可以只做一个<code>sign(x-y)</code>(或者,对于非数值的东西来说,更好的方法是,只做一个x>;y-当然这需要<code>sorted</code>接受一个布尔值而不是一个整数比较器)。这也会更清楚:当<code>x>y</code>时为阳性(而使用<code>cmp</code>时,必须记住当<strong>第一个</strong>是<em>大的</em>时为阳性,但可能是相反的方式)。当然<code>cmp</code>本身也有意义,因为其他原因(例如,当排序非数字的东西时,或者如果您希望排序是稳定的,这不可能与简单的布尔值一起使用)</p> <p>所以,问题是:为什么Python设计器决定不使用该语言的<code>sign</code>函数?为什么要麻烦<code>copysign</code>而不是它的父<code>sign</code>?</p> <p>我遗漏了什么吗?</p> <p>编辑-在彼得·汉森评论之后。 很公平,你没有使用它,但你没有说你用python做什么。在我使用python的7年里,我无数次地需要它,最后一个是折断骆驼背的稻草!</p> <p>是的,你可以通过cmp,但是我需要通过的90%的次数是用一个类似于 <code>lambda x,y: cmp(score(x),score(y))</code>这对sign很有用。</p> <p>最后,我希望您同意<code>sign</code>比<code>copysign</code>更有用,所以即使我接受了您的观点,为什么还要费心在数学中定义它,而不是用符号?文案怎么能比文案有用呢?</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>另一行符号()</p> <pre><code>sign = lambda x: (1, -1)[x<0] </code></pre> <p>如果希望它返回0(x=0):</p> <pre><code>sign = lambda x: x and (1, -1)[x<0] </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
我是否正确构建了这个递归神经网络
8 回答
我是否正确理解acquire和realease是如何在python库“线程化”中工作的
5 回答
我是否正确理解Keras中的批次大小?
3 回答
我是否正确理解PyTorch的加法和乘法?
6 回答
我是否正确组织了我的Django应用程序?
6 回答
我是否正确计算执行时间?如果是这样,那么并行处理将花费更长的时间。这看起来很奇怪
7 回答
我是否每次创建新项目时都必须在PyCharm中安装numpy?(安装而不是导入)
2 回答
我是否每次运行jupyter笔记本时都必须重新启动内核?
3 回答
我是否用python安装了socks模块?
5 回答
我是否真的需要知道超过一种语言,如果我想要制作网页应用程序?
10 回答
我是否缺少spaCy柠檬化中的预处理功能?
10 回答
我是否缺少给定状态下操作的检查?
3 回答
我是否能够使用函数“count()”来查找密码中大写字母的数量((Python)
6 回答
我是否能够使用用户输入作为colorama模块中的颜色?
7 回答
我是否能够创建一个能够添加新Django.contrib.auth公司没有登录到管理面板的用户?
8 回答
我是否能够将来自多个不同网站的数据合并到一个csv文件中?
2 回答
我是否能够将目录路径转换为可以输入python hdf5数据表的内容?
3 回答
我是否能够等到一个对象被销毁,直到它创建另一个对象,然后在循环中运行time.sleep()
3 回答
我是否能够通过CBV创建用户实例,而不是首先创建表单?(Django)
3 回答
我是否要使它成为递归函数?
1 回答