python定义类时括号_为什么在定义类时括号是可选的,而在定义函数时括号是必需的?...

我认为你的问题的答案只是语法。这正是Python的设置方式,但我对它的设置方式的看法是:

我认为函数来自数学,比如:f(x) = x

所以当计算机编程语言被创造出来的时候,从模拟数学到编程语言似乎有某种逻辑上的连续性。

另一方面,类是计算机科学和重复内存管理的更多结构,因此它们不是以这样的方式创建的,但是由于它们具有功能的质量,所以它们被赋予了类似的符号。

对于Python,我将使用术语method来表示function,因为这是常用的行话。。。

我理解您的论点,即在无参数情况下,应该允许使用快捷方式定义class和method:对于没有继承的classes

对于没有参数的methods

我能想到的一个原因是使用和定义的一致性。让我们看一些例子:

定义:def funcA():

return 0

def funcB(arg):

return arg

你想称之为功能:>>> funcA()

>>> functB("an argument")

以及>>> f1 = funcA

>>> f2 = funcB

>>> f1()

>>> f2("another argument")

传递引用并调用它们。

声明之间的paranthesis语法与调用methods一致。

您需要放上那些空括号,否则解释器将给您一个对method的引用,而不是实际调用它。

这样做的一个好处是可以使代码非常清晰。

定义:class classA:

pass

class classB(object):

pass

用法:# create an instance

my_instance_of_A = classA()

my_instance_of_B = classB()

# pass a reference

my_ref_to_A = classA

my_ref_to_B = classB

# call by reference

new_A = my_ref_to_A()

new_B = my_ref_to_B()

这里的行为没有关于class是否继承的变化,其调用行为由其内部或继承的__init__方法的定义决定。

我认为当前设置的要求空的()使代码对未经训练的人更具可读性。

如果你真的真的想按你的要求去做,有一个解决办法。。。你可以这样做:func = lambda: "im a function declared with no arguments, and I didn't use parenthesis =p"

可以称之为:>>> func

at 0x6ffffef26e0>

>>> func()

"im a function declared with no arguments, and I didn't use parenthesis =p"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489660.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java bean set_JavaBean自动生成get和set方法

android计算每个目录剩余空间丶总空间以及SD卡剩余空间ublic class MemorySpaceCheck { /** * 计算剩余空间 * param path * return */ public static String getAvail ...ionic+angularjs开发hybrid App(环境配置+创建测试项目)本文使用的…

从地心到宇宙,再到治疗癌症与“赋灵”智能,这届腾讯WE都聊了些啥?

来源:腾讯科学WE大会Hod Lipson这人是谁————哥伦比亚大学创意机器实验室主任,致力于开发机器人的创造力,让机器人拥有自己的思想和情感。说了些啥————大概100年来我们一直试图建造有自我意识的机器人,我们希望这些机器人…

复制文件,并重命名

总体思路:1. 先复制文件到指定目录下; 2. 根据需要,修改文件名称。 (1)复制文件 实现代码: 例如:把“D:\照片”目录下的文件复制到“D:\姓名”目录下。 /** * 描述:复制文件 到 目标…

python计算入门_Python入门教程02-01(计算机核心基础)

python入门课程第二章-计算机核心基础Python入门教程01-01(ATM购物车)学习过后,我们需要了解一下计算机的核心基础,目标就是为了让后面更好的理解python这门语言,更容易接受后续新的课程难点。下面我们来一起学习第二章吧~~~~一 引子:接下来一…

php字符串反转abcdefg_php中实现字符串翻转的方法

字符串:$str "abcdefg";方法一(直接使用php自带函数strrev($str))print_r(strrev($str));使用for循环方式,str_split($str)$newArrOne [];//初始化一个新的数组$newStrOne ;//初始化一个新的字符串$newArrOne str_split($str);$arrCount count($newArrOne);for …

RISC-V浪潮来袭!115页PPT超详论述,如何与ARM争锋!(一)

来源:芯潮近两年来,在ARM和Intel主导的竞争格局中,一个新的开源指令集架构RISC-V在芯片江湖声名鹊起。面对来势汹汹的AI和IoT浪潮,RISC-V提供了一种高能效低成本解决方案,吸引了谷歌、高通、IBM、镁光、西部数据、三星…

redisb并发访问慢出现的问题

最近项目一上线,就问题颇多,本地测试,ok,上线后,大用户量的时候,顶不住。用了一个礼拜的时间发现的问题,总结下来。 项目是netty4.0,reids2.8,nginx等框架。目前是4台proxy服务器&am…

python idle运行anaconda_在Python IDLE 下调用anaconda中的库教程

大家都知道,Anaconda是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。下载了anaconda我们可以很方便的随时调用这里面的库。原先我自己在Python官网下载了python 3.7开发环境,anaconda的后面下载的,…

php知识点_PHP那些琐碎的知识点(整理)

PHP不会检查单引号 字符串中变量内插或(几乎)任何转义序列,所以采用单引号这种方式来定义字符串相当简单快捷。但是,双引号 "" 则不然,php会检查字符串中的变量或者转义序列,并输出变量和转义序列的值。$a "123&…

有关军事混合智能的思考

来源:中国指挥与控制学会0引言随着深度学习、强化学习等新一代人工智能技术的发展,其在计算机视觉、语音识别、自然语言处理、生物医疗领域及游戏博弈等方面取得很大的突破,人工智能在军事领域应用也愈加广泛,催生了军事智能的概念…

nginx动静分离配置_Nginx 动静分离与负载均衡的实现

一、前提企业中,随着用户的增长,数据量也几乎成几何增长,数据越来越大,随之也就出现了各种应用的瓶颈问题。问题出现了,我们就得想办法解决,一般网站环境,均会使用LAMP或者LNMP,而我…

scala shuffle

val arr (0 to 100).map(_ * 1d) /// 下面这一步只能用to不能用until,scala里面实现返回的两个Range继承路径不同,不能混用 val a_shuffled util.Random.shuffle(0 to arr.size -1).map(arr(_)) 转载于:https://www.cnblogs.com/suanec/p/6043286.html…

计算机、数学、运筹学等领域的32个重要算法

来源: 必达智库奥地利符号计算研究所(Research Institute for Symbolic Computation,简称RISC)的Christoph Koutschan博士在自己的页面上发布了一篇文章,提到他做了一个调查,参与者大多数是计算机科学家&am…

Fibonacci(求前四位数)

FibonacciTime Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uDescription2007年到来了。经过2006年一年的修炼,数学神童zouyu终于把0到100000000的Fibonacci数列 (f[0]0,f[1]1;f[i] f[i-1]f[i-2](i>2))的值全部给背了下来。 接…

fiddler如何设置过滤https_手把手教你如何给网站设置https

我也是小白一枚,最近开了一个博客站点,个人博客除了微信分享功能不能开通外,其他的功能我都要试着做一下,磨练磨练自己。跟一些大佬分享有所不同,我这篇文章是以一个小白的角度来写,这样有一个优势&#xf…

php 解释语言,php是解释型语言吗

PHP是属于解释型语言,还是编译型语言?下面先来看一下计算机语言的发展史:第一代:机器语言,全部都是01010二进制代码,计算机能够直接的识别,运行效率是最高的,但是难编,难…

清华大学施路平:发展人工通用智能最好的时机到了!

来源:学术头条 今年8月,一辆来自清华的无人驾驶自行车登上了Nature的封面。这是中国的人工智能芯片首次登上Nature,在全球引发热议。这辆自行车不仅可以平衡自身,还可以绕过障碍物,甚至可以响应简单的声音命令。自行车…

Debian10降级安装php,如何在Debian 10 Linux上安装PHP

PHP是最常用的服务器端编程语言之一。在本指南中,我们将讨论如何在Debian 10 Buster上安装PHP。我们还将向您展示如何将PHP与Nginx和Apache集成。Debian 10随附PHP 7.3版,最流行的CMS和框架(如WordPress,Magento和Laravel)均支持该版本。先决…

设置线程堆栈大小_哇擦,传说中的堆栈溢出和快速排序

stack overflow堆栈溢出和快速排序这两个概念对开发人员来说并不陌生,但是通知都只是听说过,真正开发过程中却很少会遇到。我也是敲代码好些行后非常有幸撞上了,而且还是两个一起出现的,这其中过程的滋味还是相当酸爽,…

模板引擎的简单原理template

​var templateStr "我的名字叫<%name%>我是一只小狗,今年<%age%>岁。";var data {name:旺财,age:18};/*会利用正则来匹配*///console.log(/<%\s*([^%>]\S)\s*%>/.exec(templateStr));var match /<%\s*([^%>]\S)\s*%>/.exec(templa…